Ruby on rails &引用;BCrypt::Errors::InvalidHash:invalid hash“;具有Omniauth身份
我有一个带有Omniauth标识的Rails 4应用程序,在生产过程中,我为一些用户(少数用户)发现了一些错误: 我已经用hash\u valid方法测试了所有身份密码\u摘要Ruby on rails &引用;BCrypt::Errors::InvalidHash:invalid hash“;具有Omniauth身份,ruby-on-rails,ruby-on-rails-4,omniauth,bcrypt,bcrypt-ruby,Ruby On Rails,Ruby On Rails 4,Omniauth,Bcrypt,Bcrypt Ruby,我有一个带有Omniauth标识的Rails 4应用程序,在生产过程中,我为一些用户(少数用户)发现了一些错误: 我已经用hash\u valid方法测试了所有身份密码\u摘要 BCrypt::Password.valid_hash?(identity.password_digest) 所有这些都是好的 因此,我猜问题来自用户给出的密码,但我不知道在哪里,我无法重现开发中的错误 登录表单是一个基本表单: = form_tag "/auth/identity/callback?origin=#{
BCrypt::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"
有什么想法吗,谢谢?我怀疑您存储了一个空白密码 确保您正在验证您的用户是否输入了密码。如果修剪空白,请确保在确保字符串不为空之前修剪密码。BCrypt::password.create('admin'))
用户此方法I我的案例我使用
Rails控制台
存储密码,如下所示
user = User.find(2)
user.encrypted_password = "ilovepeace3"
user.save
就在那之后,我遇到了错误
BCrypt::Errors::InvalidHash:无效哈希
当我查看用户表时,我看到密码的保存方式和我输入的一样,即纯文本格式(未加密的)。然后我做了以下操作并消除了错误:P
user = User.find_by_email(email)
user.password = params[:password]
user.password_confirmation = params[:password_confirmation]
user.save
user = User.find_by_email(email)
user.password = params[:password]
user.password_confirmation = params[:password_confirmation]
user.save