0

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

BCrypt::Errors::InvalidHash: invalid hash

我已经使用 hash_valid 方法测试了所有身份密码摘要?

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"

任何想法,谢谢?

4

3 回答 3

1

我怀疑您存储了一个空白密码。

确保您正在验证您的用户是否输入了密码。如果您修剪空格,请确保在确保字符串不为空之前修剪密码。

于 2014-09-18T04:09:23.917 回答
1

BCrypt::Password.create('admin')

使用此方法

于 2014-12-23T08:05:21.873 回答
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
于 2016-03-20T15:14:29.950 回答