我正在使用Devise
和Rails 3
。
我想调用一个函数,只需验证用户的username
和密码组合是否正确,而无需实际登录该用户。有没有办法用Devise来完成这样的事情:
User.authenticate(params[:username], params[:password])
答案 0 :(得分:61)
让用户离开数据库:
user = User.find_by_email(params[:email])
然后你可以用以下方法检查他们的密码:
user.valid_password?(params[:password])
答案 1 :(得分:4)
或者使用一个班轮:
User.find_by_email(params[:email]).try(:valid_password?, params[:password])
返回true
或nil
答案 2 :(得分:0)
Devise有两个built-in methods可以让你做到这一点:
user = User.find_for_authentication(username: params[:username])
user.valid_password?(params[:password])
答案 3 :(得分:-8)
好吧,Devise自动进行:当用户总结登录信息时,它就会检查你。
如果您想要更多控制权,那么您有两个选择:
1-看看Devise来源找到它进行检查的地方
2-编写自己的登录系统(这并不像你想象的那么难)