使用Bcrypt

时间:2016-04-30 06:28:37

标签: ruby-on-rails ruby-on-rails-4 bcrypt bcrypt-ruby

  

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.passworduser.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版本的差异吗?

1 个答案:

答案 0 :(得分:1)

正确的方法是使用自Rails 3以来可用的has_secure_password(记录的方法)。也许该指南基于Rails 3之前的练习?