我正在构建一个使用Devise来管理用户状态的应用。我还在同一个应用程序中构建一个API,该应用程序从POST请求中接收用户名和密码
我想要完成的是:
Devise::Models::DatabaseAuthenticatable
获取用户传入的密码,对其进行加密,将其与用户模型上的encrypted_password
字段进行比较,如果它们相同,请继续执行其余操作我的代码上面的第二个项目是我遇到的问题。在控制台中,我似乎无法获取模块Devise::Models::DatabaseAuthenticatable
的实例来尝试您在docs中可以找到的各种实例方法。
任何帮助将不胜感激!
答案 0 :(得分:0)
如果我正确理解了您的问题,您可以使用.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
您还可以查看其他方法,例如devise token auth gem。