Ruby on rails 3 轨道3.2.20设置装置:可锁定
我有一个Rails 3.2.20应用程序,它使用Desive 2.1.2。一切正常,但我想在我的项目中添加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
: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
解锁策略
基本上,我的设计工作得很好,我不想弄脏水,也不想在我的项目中引入任何错误
如果有人能帮助我完成这项工作,我将非常感谢你的帮助。对不起,如果问题是多余的或不清楚
提前感谢你的帮助