使用Devise/DatabaseAuthenticatable模块来检查密码/salt字符串



我正在构建一个使用Devise来管理用户状态的应用程序。我还在同一个应用程序中构建一个API,从POST请求接收用户名和密码

我正在努力实现的是:

  • 从数据库中按用户名获取用户(简单明了)
  • 使用Devise::Models::DatabaseAuthenticatable获取用户传入的密码,对其进行加密,并将其与用户模型上的encrypted_password字段进行比较,如果它们相同,则继续执行我的其余代码

上面的第二个项目符号就是我遇到的问题。在控制台中,我似乎无法获得模块Devise::Models::DatabaseAuthenticatable的实例来尝试您在文档中可以找到的各种实例方法。

如有任何帮助,我们将不胜感激!

如果我正确理解你的问题,你可以使用.valid_password?设计方法。类似的东西:

#assuming you'll receive nested params like user[email], user[password]...
user_params = params.require(:user).permit(:email, :password)
user = User.find_by(email: user_params[:email])
return head 403 if user.nil?
valid = user.valid_password?(user_params[:password]) #true or false...
return head 403 unless valid
sign_in(user) #devise helper: if you want to sign in that user

您还可以检查其他方法,如设计令牌auth-gem。

最新更新