" BCrypt :: Errors :: InvalidHash:无效哈希"在尝试验证密码时

时间:2017-05-27 20:05:09

标签: ruby-on-rails ruby passwords bcrypt

我有一个模型User

class User < ActiveRecord::Base
  has_secure_password
end

我正在使用gem 'bcrypt', '3.1.11'。但由于某种原因,authenticate方法无效。

我有一个用户记录user,其中user.password_digest == "password"。但在控制台中键入user.authenticate('password')会返回以下错误:

> user.authenticate('password')
BCrypt::Errors::InvalidHash: invalid hash
from /home/.rvm/gems/bcrypt-3.1.11/lib/bcrypt/password.rb:60:in 'initialize'

我甚至不认为这个论点应该是一个哈希:它不应该只是一个字符串吗?这里发生了什么?

1 个答案:

答案 0 :(得分:1)

它不是Hash对象,它指的是password_digest中的hash value似乎无效,也就是说,您设置错误。

试试这个:

user.password = 'password'
user.password_confirmation = 'password'
user.save

现在您可以通过以下方式进行身份验证:

user.authenticate('password')