我正在使用 rails 和 mongodb 开发一个应用程序。它有一个身份验证系统,但根本不工作。过了一会儿,我想通了为什么。如果我做:
<% user = User.where(:email => 'test@test.com').first %>
<%= user.hash %> | <%= user.salt %>
它返回:
287708835 | $2a$10$Arn.fJ0QT3zKRE748wNbXO
但是如果我在 mongo 上做“同样的事情”
db.users.find({'email' => 'test@test.com'})
它返回:
{ "_id" : ObjectId("5103834b108f67f3e9000005"), "email" : "test@test.com", "salt" : "$2a$10$Arn.fJ0QT3zKRE748wNbXO", "hash" : "$2a$10$Arn.fJ0QT3zKRE748wNbXOYBI7k54x6HKypo0m4LyUrvERpTKygSe" }
所以我可以毫无问题地检索盐,但不能检索哈希。
我使用 bcrypt-ruby 生成盐和哈希
BCrypt::Engine.generate_salt
BCrypt::Engine.hash_secret(password, salt)
我怎样才能从数据库中获取真正的哈希?
提前致谢 (: