【问题标题】:"BCrypt::Errors::InvalidHash: invalid hash" when trying to authenticate password尝试验证密码时出现“BCrypt::Errors::InvalidHash: invalid hash”
【发布时间】:2017-10-28 12:04:48
【问题描述】:

我有一个模特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'

我什至不认为参数应该是一个哈希:它不应该是一个字符串吗?这是怎么回事?

【问题讨论】:

    标签: ruby-on-rails ruby passwords bcrypt


    【解决方案1】:

    不是Hash对象,是指password_digest中的hash value,貌似无效,就是你设置错误。

    试试这个:

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

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

    user.authenticate('password')
    

    【讨论】:

      猜你喜欢
      • 2012-06-17
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 2017-01-24
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 2017-03-14
      相关资源
      最近更新 更多