Tag: 认证

使用Devise在RoR中的会话超时消息

我有一个使用设计保护的应用程序和30分钟的会话超时。 使用设计一切都适用于正常导航,如果用户在超时时点击链接,他们会被重定向回登录屏幕,并显示“您的会话已过期,请再次登录以继续。”,非常好。 但是我在很多地方都有ajax。 如果会话超时并且用户执行了ajax操作,我想要与上面相同的行为,而不是在后台静默失败并出现401错误。 到目前为止,我在每个页面上都有这个jquery代码来捕获401并重新加载: $(document).ajaxError(function(e, error) { switch(error.status) { case 401: { // unauthorised (possible timeout) location.reload(); break; } 它运作良好,但有一个恼人的问题: 因为ajax请求首先命中设备,当我的应用程序重新加载页面时,我会被定向到登录页面,但是我没有看到超时消息,我看到未经身份validation的“您需要在继续之前登录或注册”。 信息。 有没有办法确保在第二个请求设计仍然显示超时消息?

在Rails 3.2 App中使用多个模型时,如何使用Devise处理身份validation

我正在使用Rails 3.2应用程序,我使用Devise进行身份validation。 我决定尝试单表inheritance来管理用户角色,但我很快就遇到了问题。 我目前有三个用户模型, User < ActiveRecord , Admin < User和Collaborator < User 。 管理员和协作者共享大多数用户列,但他们的行为和权限略有不同。 我的模特目前看起来像这样: class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :token_authenticatable # Setup accessible (or protected) attributes for your model attr_accessible :email, :name, :password, :password_confirmation, :remember_me before_save :ensure_authentication_token […] end class Admin < User has_one :account, dependent: :destroy […]

rake db:创建失败,postgresql 8.4的身份validation问题

首先,请原谅我的完全无声。 我真的试图找到一个解决方案,但现在我陷入困境,完全无能为力。 我正在尝试在远程服务器上部署rails 3应用程序; 在我的本地VM上开发时,没有问题。 但现在,当我试图跑 rake db:create 它失败了,有错误(这里翻译,因为我是法国人): FATAL : password authentication failed for user <> 这是我的database.yml: login: &login adapter: postgresql username: mylogin password: mypassword host: localhost port: 5432 encoding: UTF8 development: <<: *login database: somesite_development test: <<: *login database: somesite_test production: <<: *login database: somesite_production 使用命令行工具“createuser”在postgre-side创建了用户“mylogin”。 它被授权创建dbs。 postgresql.conf配置服务器监听localhost。 我用pg_hba.conf尝试了很多东西,没有用 – 无论在127.0.0.1上用户“mylogin”使用的方法(ident,密码,md5),身份validation都失败了 – 尽管我从未遇到过连接/创建dbs的问题PSQL。 […]

有没有人使用omniauth与rails 2.3.8?

我是Rails的新手,我正在尝试使用带有rails 2.3.8的omniauth。 我找不到这个版本的rails的任何教程,所以我提到了http://blog.railsrumble.com/blog/2010/10/08/intridea-omniauth 。 我添加了初始化程序如下: omn​​iauth.rb OmniAuth::Strategies::Twitter = { :consumer_key => ‘xxxxxx’, :consumer_secret => ‘xxxxxx’ } 在此步骤之后,如果我尝试点击URL’/ auth / twitter’,那么我得到“No route matches”/ auth / twitter“with {:method =>:get}”。 有没有人使用omniauth与rails 2.3.8?

如何在各种环境中使用和配置omniauth与yahoo,google,facebook策略?

我正在开发一个Rails 3.2应用程序,允许用户通过多个提供商进行身份validation… Yahoo,Google,Facebook和/或Twitter。 我们正在使用omniauth,虽然我理解基本的工作流程,但我找不到一个包含文档,说明应如何配置这些特定的提供程序,以及如何设置Rails应用程序,以便我可以正确地测试/使用这些策略开发,测试和生产环境。 所以我的问题: 对于这些提供商(雅虎,谷歌,推特,脸书)中的每一个,需要哪些步骤来为omniauth单独配置每个提供商,以便它们可以用于开发,测试和生产环境? 配置Rails应用程序以正确使用每个提供程序以适应我正在运行的任何环境的最佳/推荐方法是什么? 谢谢 – wg

Ruby on Rails使用Devise身份validation进行function测试

我正在寻找一个解决奇怪问题的方法。 我有一个控制器,需要身份validation(使用设计gem)。 我添加了Devise TestHelpers,但我无法让它工作。 require ‘test_helper’ class KeysControllerTest ‘testuser@demomailtest.com’, :password => ‘MyTestingPassword’, :password_confirmation => ‘MyTestingPassword’ ) sign_in @user @key = keys(:one) end test “should get index” do get :index assert_response :success assert_not_nil assigns(:keys) end test “should get new” do get :new assert_response :success end test “should create key” do assert_difference(‘Key.count’) do post :create, :key => […]

某些(不是所有)控制器的HTTP Basic Auth

使用Rails 3.2。 我有六个控制器,并想用http_basic_authenticate_with来保护它们中的一些 (但不是全部)。 我不想手动将http_basic_authenticate_with添加到每个控制器(我可以在将来添加另一个控制器而忘记保护它!)。 似乎答案是将它放在application_controller.rb ,其中:except arg,它将列出不应受保护的控制器。 问题是,:except子句需要方法名称而不是外部控制器模块名称,例如: http_basic_authenticate_with :name => ‘xxx’, :password => ‘yyy’, :except => :foo, :bar 然后我想“等等,因为我已经将受保护的控制器分组在routes.rb ,让我们把它放在那里。” 所以我在我的路线中试过这个: scope “/billing” do http_basic_authenticate_with :name … resources :foo, :bar … end 但现在我明白了 undefined method `http_basic_authenticate_with’ 什么是最好的方法来解决这个问题?

将设计身份validation纳入现有的用户结构?

我有一个function齐全的身份validation系统,其用户表有超过50列。 它很简单,但它使用salt进行散列加密,使用电子邮件而不是用户名,并且还有两种不同类型的用户和管理员。 我希望将Devise身份validation合并到我的应用程序中,以增强电子邮件validation,忘记密码,记住我的令牌等额外部分…我只是想看看是否有人在收集时遇到任何建议或问题设计一个已经存在的用户结构。 我的用户模型中的基本字段是: t.string :first_name, :null => false t.string :last_name, :null => false t.string :email, :null => false t.string :hashed_password t.string :salt t.boolean :is_userA, :default => false t.boolean :is_userB, :default => false t.boolean :is_admin, :default => false t.boolean :active, :default => true t.timestamps 为了便于参考,这里是迁移的Devise字段: t.database_authenticatable :null => false t.confirmable t.recoverable t.rememberable t.trackable add_index “users”, […]

使用Rails和Devise进行令牌认证

我正在按照这篇优秀的文章来设置我的rails(3.2)API的身份validation部分: http://blog.joshsoftware.com/2011/12/23/designing-rails-api-using-rabl-and-devise/ 我做了以下步骤: – 增加了对Gemfile的设计 -Enabled设计用户模型并运行所需的迁移 – 我的用户模型是 class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable devise :token_authenticatable attr_accessible :email, :authentication_token, :password, :password_confirmation, :remember_me end 以及数据库中的token_authenticable(通过迁移)。 -Subclassed RegistrationController: class RegistrationsController resource_name, :recall => ” {controller_path}#new”) sign_in(resource_name, resource) current_user.reset_authentication_token! respond_with resource, :location => after_sign_in_path_for(resource) end def update super end end – 在routes.rb中,我有: devise_for […]

使用来自请求标头的auth_token而不是使用Rails 3 / devise的POST / PUT参数

我需要在Rails 3.1 API中结合最新版本的设备使用基于令牌的身份validation。 到目前为止没问题。 现在我不想将我的:auth_token附加到客户端的POST / PUT参数,而是将此令牌作为请求标头发送,如HTTP_X_MYAPP_AUTH_TOKEN“。 我可以说服设计使用它而不是参数中的令牌吗? 是否可以实现这两者,以便我的API用户可以通过请求头或POST / PUT参数发送令牌? 问候。 费利克斯