我目前正在阅读 Michael Hartl 的书(Ruby on Rails 教程第 3 版),他使用 password_digest
和他的身份验证模型,我查看了 Pragmatic Studio 的 Rails 类(class),在他们的示例视频中,他们在他们的身份验证模型中使用 passowrd_hash/password_salt
。从维基百科看来,salt 似乎是密码学中的标准用法,并且具有多种安全用途。我在 password_digest 上真正能找到的是它与 rails 方法 has_secure_password
一起工作。
是一个人比另一个人更受欢迎,还是他们最终服务于不同的目的?
当使用 has_secure_password
时,许多加密魔法会自动为您完成,并且会公开一些功能,使您更容易验证用户的密码。
摘自 has_secure_password 文档:
# Schema: User(name:string, password_digest:string)
class User < ActiveRecord::Base
has_secure_password
end
user = User.new(name: 'david', password: '', password_confirmation: 'nomatch')
user.save
# => false, password required
user.password = 'mUc3m00RsqyRe'
user.save
# => false, confirmation doesn't match
user.password_confirmation = 'mUc3m00RsqyRe'
user.save
# => true
user.authenticate('notright')
# => false
user.authenticate('mUc3m00RsqyRe')
# => user
User.find_by(name: 'david').try(:authenticate, 'notright')
# => false
User.find_by(name: 'david').try(:authenticate, 'mUc3m00RsqyRe')
# => user
您提到的两个系统都可以使用,这取决于您希望使用什么、您有哪些可用选项等。
我是一名优秀的程序员,十分优秀!