您好我需要在我自己的实现和查询User.where(:password => 'password')
中做Devise,但密码是加密和加密的。什么是"铁路"覆盖这种行为的方式?我尝试使用attr_writter
def password=(pass)
super(hashpassword(pass))
end
但没有成功,我仍然看到SELECT 'users'.* FROM 'users' WHERE 'users'.'password' = 'non-salted-password' LIMIT 11
有什么建议吗?谢谢。
重要
我没有使用设计。
关于解决方案
批准的解决方案是使用本地"身份验证"方法,我不得不将数据库中的密码字段更改为password_digest,并且有效。
答案 0 :(得分:2)
可以使用authenticate方法。这适用于has_secure_password。
authenticate
的用法如下:
user = User.new(password: 'hash-of-the-password')
user.save
user.authenticate('not-the-password') # => false
user.authenticate('password') # => user
has_secure_password
需要一个名为password_digest
的列(尽管您可能会覆盖此列),在有人注册密码/密码确认后会填充哈希值。
希望有所帮助 - 如果您需要更多信息或有任何疑问,请与我联系。