Rails 3.2.20设置Devise:可锁定

时间:2014-11-16 00:18:10

标签: ruby-on-rails-3 devise

我有一个使用Devise 2.1.2的Rails 3.2.20应用程序。一切正常,但我想将:lockable功能添加到我的项目中。在5次尝试失败后,将帐户锁定2小时。

我一直在阅读Devise文档和各种StackOverflow问题和答案,但我的设置与某些设置不同。

我在自己的控制器中处理会话,并使用策略通过电子邮件或Devise WiKi的用户名登录。

这是我目前的设置:

的routes.rb

devise_for :users, :controllers => { :sessions => "my_sessions" }

my_sesssions_controller.rb

class MySessionsController < Devise::SessionsController
  skip_before_filter :check_concurrent_session

  def create
    super
    set_login_token
  end

  private
  def set_login_token
    token = Devise.friendly_token
    session[:token] = token
    current_user.login_token = token
    current_user.save(validate: false)
  end
end

user.rb

attr_accessor :login
    def self.find_first_by_auth_conditions(warden_conditions)
            conditions = warden_conditions.dup
            if login = conditions.delete(:login)
              where(conditions).where(["lower(username) = :value OR lower(email) = :value", { :value => login.downcase }]).first
            else
              where(conditions).first
            end
          end

config / initializers / devise.rb(摘录)

  config.authentication_keys = [ :login ]

  config.case_insensitive_keys = [ :username ]

  config.strip_whitespace_keys = [ :username ]

所以我的问题是,考虑到我在自己的控制器中处理会话,并且还通过电子邮件或用户名传递身份验证,如何在5次尝试失败后实施:lockable锁定帐户2小时?< / p>

我假设我需要生成和运行迁移,以及设置锁定和解锁策略。

我读过这篇文章How to make devise lockable with number of failed attempts,但我对unlock_keys有点不确定以及它是如何工作的。同样在这篇文章中它讨论了为unlock_token生成一个索引,但我认为我不会需要它,因为我将使用:time unlock_strategy。

基本上,我有Devise工作得很好,我不想浑水或在我的项目中引入任何错误。

如果有人可以指导我完成此操作,我们将非常感谢您的帮助。对不起,如果问题多余或不清楚。

提前感谢您的帮助。

0 个答案:

没有答案