Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails &引用;BCrypt::Errors::InvalidHash:invalid hash“;具有Omniauth身份_Ruby On Rails_Ruby On Rails 4_Omniauth_Bcrypt_Bcrypt Ruby - Fatal编程技术网

Ruby on rails &引用;BCrypt::Errors::InvalidHash:invalid hash“;具有Omniauth身份

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=#{

我有一个带有Omniauth标识的Rails 4应用程序,在生产过程中,我为一些用户(少数用户)发现了一些错误:

我已经用hash\u valid方法测试了所有身份密码\u摘要

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