我有一个带有Omniauth Identity的Rails 4应用程序,在生产中我遇到了一些用户的错误(少数):
BCrypt::Errors::InvalidHash: invalid hash
我用方法hash_valid?
测试了所有身份password_digestBCrypt::Password.valid_hash?(identity.password_digest)
并且一切都很好。
所以我猜这个问题来自用户提供的密码,但我知道在哪里,我无法重现开发中的错误。
登录表单是一个基本表单:
= form_tag "/auth/identity/callback?origin=#{request.original_url}", class: "simple_form" do
.form-group.string
= text_field_tag :auth_key, nil, class: "string form-control", placeholder: "Email", autofoucs: true
.form-group.password
%div
= password_field_tag :password, nil, placeholder: "Password"
%p= submit_tag "Sign in"
任何想法,谢谢?
答案 0 :(得分:1)
我怀疑您的密码已存储。
确保您确认用户输入了密码。如果修剪空格,请确保在确保字符串不为空之前修剪密码。
答案 1 :(得分:0)
BCrypt :: Password.create('管理&#39)
使用此方法
答案 2 :(得分:0)
我的情况是我使用Rails console
存储密码,如下所示
user = User.find(2)
user.encrypted_password = "ilovepeace3"
user.save
之后我遇到了错误
BCrypt :: Errors :: InvalidHash:无效哈希
当我查看用户表时,我看到密码已保存,就像我输入的那样,即plain text format
(unencrypted
)。然后我做了以下并摆脱了肮脏的错误:P
user = User.find_by_email(email)
user.password = params[:password]
user.password_confirmation = params[:password_confirmation]
user.save