本指南展示了如何将 Bcrypt 与 Rails 一起使用,但它在实现上与关于 Bcrypt的Rails 文档有很大不同。
指南版
设置密码
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)
将user
根据密码参数是否匹配返回 false 或实例变量user.password_digest
。
user.authenticate('notright')
user.authenticate('mUc3m00RsqyRe')
问题
自从我第一次看到它以来,我一直使用文档版本,但是该指南是否遵循了一些更好的做法?
导游为什么要改写轮子?这似乎很不赖西。
这只是 Bcrypt 或 Rails 版本的不同吗?