我是Rails的新手,来自PHP + Python背景。我正在基于生产数据库转储在计算机上设置开发环境。
我无法登录我的开发环境,因为无论用户名或密码如何,每个用户登录都会因BCrypt InvalidHash错误而失败。
我在BCrypt在线网站上对照我的密码检查了users.encrypted_password
哈希-正确匹配。
我写了一个快速脚本来重置所有密码,以查看我的Fedora机器和产品Heroku配置之间是否存在一些奇怪的配置差异:
User.find_each do |user|
user.password = 'password'
user.save
end
但这仍然是 失败,并出现相同的InvalidHash错误,堆栈跟踪如下:
/home/eric/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bcrypt-3.1.11/lib/bcrypt/password.rb:60:in `initialize': invalid hash (BCrypt::Errors::InvalidHash)
from /home/eric/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bcrypt-3.1.11/lib/bcrypt/password.rb:46:in `new'
from /home/eric/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/bcrypt-3.1.11/lib/bcrypt/password.rb:46:in `create'
from /home/eric/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/clearance-1.16.1/lib/clearance/password_strategies/bcrypt.rb:28:in `password='
from /home/eric/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/clearance-1.16.1/lib/clearance/user.rb:111:in `password='
from db/reset_passwords.rb:9:in `block in <top (required)>'
clearance.rb配置:
Clearance.configure do |config|
config.rotate_csrf_on_sign_in = true
config.password_strategy = Clearance::PasswordStrategies::BCrypt
end
型号详情:
> User.column_names
=> ["id", "first_name", "email", "encrypted_password", "confirmation_token", "remember_token"]
我在做什么错?看来我的开发环境缺少某种配置。
答案 0 :(得分:1)
有人建议我的操作系统有故障。我尝试了一个简单的BCrypt::Password.create("password")
,但同样失败。那把我带到了他们的GitHub ...
https://github.com/codahale/bcrypt-ruby/issues/170
因此bcrypt-ruby在Fedora 28+上崩溃了。版本3.1.12已被推送以修复该问题。我们的项目仍在使用3.1.11。
经验教训:检查依赖项!