我正在使用“has_secure_password”方式在数据库中存储安全密码。当管理员创建用户时(在我的应用程序中创建用户,用户不能自己创建帐户),在用户模型中,password_digest 由创建随机密码的方法填充(参见代码)。然后保存记录时,它会被安全保存。所以用户方法是创建一个密码摘要说“TY5665^%^”,然后将它保存在数据库中说“Y^6&$d%$56GFT”。伟大的!
before_validation :create_random_password, :on => :create
def create_random_password
self.password_digest = SecureRandom.hex(5)
end
但是当新用户登录并更改他的个人资料中的密码时,新密码会保存好,但不安全!假设用户将其更改为“password1”,它也会在数据库中保存为“password1”。那么为什么安全密码在创建时有效,但在更新时无效?