2017-05-27 394 views
0

時,我有一個模型User「BCrypt ::錯誤:: InvalidHash:無效的哈希」 嘗試驗證密碼

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

這不是Hash對象,它是指password_digest中的hash value這似乎是無效的,也就是說,您設置不正確。

試試這個:

user.authenticate('password') 

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

現在你可以驗證