35

我正在使用DeviseRails 3

我想调用一个函数,该函数将简单地验证用户username和密码组合是否正确,而无需实际登录该用户。有没有什么方法可以用 Devise 完成这样的事情:

User.authenticate(params[:username], params[:password])
4

4 回答 4

73

将用户从数据库中取出:

user = User.find_by_email(params[:email])

然后你可以检查他们的密码:

user.valid_password?(params[:password])
于 2011-06-05T18:44:40.407 回答
4

或使用一个衬垫:

User.find_by_email(params[:email]).try(:valid_password?, params[:password])

返回truenil

于 2015-01-27T10:15:45.400 回答
0

官方设计方式

Devise 有两个内置方法可以让你做到这一点:

user = User.find_for_authentication(username: params[:username])
user.valid_password?(params[:password])
于 2017-02-04T22:38:31.183 回答
-8

好吧,Devise 会自动完成:当用户提交登录信息时,它会为您进行检查。

如果您想要更多控制权,那么您有 2 个选择:

1-查看设计来源,找到它在哪里进行检查

2-编写你自己的登录系统(这并不像你想象的那么难)

于 2010-07-17T10:43:01.880 回答