【问题标题】:Correct practice for using Bcrypt使用 Bcrypt 的正确做法
【发布时间】: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.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')

问题

  • 自从我第一次看到它以来,我一直使用文档版本,但是该指南是否遵循了一些更好的做法?

  • 为什么指南要重写轮子?这似乎很不合Railsy。

  • 这只是 Bcrypt 或 Rails 版本的不同吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-09-03
      • 2013-07-02
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 2017-08-20
      相关资源
      最近更新 更多