Ruby on rails 3 轨道3.2.20设置装置:可锁定

Ruby on rails 3 轨道3.2.20设置装置:可锁定,ruby-on-rails-3,devise,Ruby On Rails 3,Devise,我有一个Rails 3.2.20应用程序,它使用Desive 2.1.2。一切正常,但我想在我的项目中添加:lockable功能。尝试5次失败后,锁定帐户2小时 我一直在阅读Deave文档和各种StackOverflow问题和答案,但我的设置与一些不同 我在自己的控制器中处理会话,并使用策略通过电子邮件或用户名从Desive WiKi登录 以下是我当前的设置: routes.rb devise_for :users, :controllers => { :sessions => "m

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

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

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

以下是我当前的设置:

routes.rb

devise_for :users, :controllers => { :sessions => "my_sessions" }
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
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
我的会话控制器.rb

devise_for :users, :controllers => { :sessions => "my_sessions" }
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
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/designe.rb(节选)

因此,我的问题是,考虑到我在自己的控制器中处理会话,并且还通过电子邮件或用户名通过身份验证,我如何实现
:lockable
,在5次尝试失败后将帐户锁定2小时

我假设需要生成和运行一个迁移,并设置锁定和解锁策略

我读了这篇文章,但我有点不确定解锁钥匙和它是如何工作的。在这篇文章中还谈到了为解锁令牌生成索引,但我认为我不需要,因为我将使用
:time
解锁策略

基本上,我的设计工作得很好,我不想弄脏水,也不想在我的项目中引入任何错误

如果有人能帮助我完成这项工作,我将非常感谢你的帮助。对不起,如果问题是多余的或不清楚

提前感谢你的帮助