user.valid_password 的设计 gem 不起作用

user.valid_password of devise gem does not work

def create
user_password = params[:session][:password]
user_email = params[:session][:email]
user = user_email.present? && User.find_by(email: user_email)

if user and user.valid_password? user_password
  sign_in user
  user.generate_authentication_token!
  user.save
  render json: user, status: 200, location: [:api, user]

else
  #render json: { errors: "Invalid email or passwords"}, status: 422
  render json: { errors: "Invalid email or passwords"}, status: 422

end

结束

用户登录后无法登录,好像是valid_password?方法不会以与设计存储在数据库中的加密密码相同的格式加密密码,任何帮助将不胜感激。

该代码适用于创建会话。只需检查您是否正确创建了用户!

在您的 rails 控制台中执行此操作

User.create({email:"anything@gmail.com",password:"anything"})
User.find(type the id of new user).valid_password?("anything")

如果此 returns 为真,那么您没有正确创建用户。检查您创建用户的方法。