最近,当我尝试使用密码保存记录时,我开始收到BCrypt“无效哈希”错误,因此我查看了BCrypt代码,发现了以下用于验证密码的方法:
def valid_hash?(h)
h =~ /^\$[0-9a-z]{2}\$[0-9]{2}\$[A-Za-z0-9\.\/]{53}$/
end
我对正则表达式不是很了解,所以我不确定该表达式到底在寻找什么,但是我已经测试了许多完全不同长度的完全正常的密码,但都不满足要求。例如:
"PassiveForbearenceFox"
"VindictivePurpleAlligator12345"
"LostBlueLizard!@#$1234"
全部返回零。
这是故意的吗?这是BCrypt之前使用的正则表达式吗?我需要更改吗?
这并不意味着Bcrypt的valid_hash吗?方法错误,表示存储的密码无效或与有效哈希系统不匹配的nil。
您可能必须添加
has_secure_password
如果没有,请在此之后检查password_digest字段。