我正在使用 Sinatra 和 DataMapper 开发一个简单的 Ruby 身份验证应用程序。
我已经成功实现了用户注册时的哈希密码方法,但是我无法使身份验证路由正常工作,它根本不匹配提供的密码与存储在数据库(MySQL)中的哈希版本。
在阅读了很多文档、关于 stackoverflow 的很多问题以及更多文档之后,我在这里寻求您的帮助。
我创建了一个简单的 GET 路由来尝试了解 BCrypt 库的工作原理,而不将密码存储到数据库中,此路由的目的只是了解如何使用该库:
get "/test" do
password_hash = BCrypt::Password.create("wazz")
password = "wazz"
puts password_hash
if BCrypt::Password.new(password_hash).is_password? password
status 201
end
halt(500, {error: password_hash}.to_json)
end
所以基本上我所要做的就是向 /test 发送一个 GET 请求,一切都应该完成,但事实并非如此,BCrypt::Password.new 似乎没有根据散列密码验证原始密码。
提前感谢您,任何帮助将不胜感激。