devise gem的user.valid_password不起作用

时间:2016-07-24 08:54:48

标签: ruby-on-rails login devise rubygems password-encryption

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?方法不会以与设备存储在数据库中的加密密码相同的格式加密密码,任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

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

在rails控制台中执行此操作

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

如果返回true,则说明您没有正确创建用户。检查您创建用户的方法。