This guide显示了如何将Bcrypt与Rails一起使用,但它与Bcrypt上的this Rails documentation的实现区别显着。
def password=(password)
self.password_digest = BCrypt::Password.create(password)
end
def is_password?(password)
BCrypt::Password.new(self.password_digest) == password
end
但是文档使用内置方法做同样的事情。
设置user.password
或设置user.password
和user.password_confirmation
值,然后调用user.save
将调用Bcrypt的一些回调,它将获取密码值并生成摘要并保存在数据库中。
user.password = 'mUc3m00RsqyRe'
user.password_confirmation = 'mUc3m00RsqyRe'
user.save
方法user.authenticate(password)
将返回false或user
的实例变量,具体取决于密码参数是否与user.password_digest
匹配。
user.authenticate('notright')
user.authenticate('mUc3m00RsqyRe')
我一直使用文档版本,因为我先看过它,但指南是否遵循了一些更好的做法?
为什么指南会改写方向盘?这似乎非常不合理。
这只是Bcrypt或Rails版本的差异吗?
答案 0 :(得分:1)
正确的方法是使用自Rails 3以来可用的has_secure_password
(记录的方法)。也许该指南基于Rails 3之前的练习?