7

我的应用程序允许人们使用密码或 Facebook 进行注册。

即使我从用户模型中删除密码验证,我也会:password_digest => ["can't be blank"]进入用户模型。

我用has_secure_password.

我怎样才能使password_digest不需要?

4

2 回答 2

7

你不能。has_secure_password自动将两个验证器添加到您的模型中:

validates_confirmation_of :password
validates_presence_of     :password_digest

password_digest相反,为没有密码的用户提供一个虚拟值:

user.password = user.password_confirmation = ""
user.password_digest = "facebook-authorized account"

这是安全的,因为不可能对密码进行哈希处理以匹配该摘要。

于 2012-08-11T20:22:45.640 回答
7

最近的提交添加了一个选项哈希has_secure_password,允许跳过对 password_digest 字段的验证。你像这样使用它:

 has_secure_password :validations => false

不幸的是,这在 3.2.13 版本的 rails 中不存在。参考https://stackoverflow.com/a/16706045/1356792

于 2013-05-23T14:07:53.607 回答