【发布时间】:2016-04-30 06:28:36
【问题描述】:
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')
问题
自从我第一次看到它以来,我一直使用文档版本,但是该指南是否遵循了一些更好的做法?
为什么指南要重写轮子?这似乎很不合Railsy。
这只是 Bcrypt 或 Rails 版本的不同吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 bcrypt bcrypt-ruby