" BCrypt :: Errors :: InvalidHash:无效哈希"与Omniauth身份

时间:2014-08-04 14:32:37

标签: ruby-on-rails ruby-on-rails-4 omniauth bcrypt bcrypt-ruby

我有一个带有Omniauth Identity的Rails 4应用程序,在生产中我遇到了一些用户的错误(少数):

BCrypt::Errors::InvalidHash: invalid hash

我用方法hash_valid?

测试了所有身份password_digest
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"

任何想法,谢谢?

3 个答案:

答案 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 formatunencrypted)。然后我做了以下并摆脱了肮脏的错误:P

 user = User.find_by_email(email)
 user.password     = params[:password]
 user.password_confirmation = params[:password_confirmation]
 user.save