CakePHP - Auth 哈希密码与 Security::hash() 不同
在我的密码重置页面上,我使用 Security::hash() 保存用户的新密码。当我尝试登录时,我的数据库保存的散列密码与 Auth 在对登录字段中的输入进行散列处理时提供的版本不匹配。
我认为这类似于 Security::hash() 使用我的应用程序盐来散列密码,而 Auth 不使用该盐?
你怎么办?
On my password reset page, I save the user's new password using Security::hash(). When I then try to log in though, my database saved hashed password does not match the version that Auth comes up with when hashing my input in the login field.
I assume this is something like Security::hash() using my application salt to hash the password, whereas Auth doesn't use that salt?
How do you go about this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是否尝试过
AuthComponent::password()
< /a> 方法代替?另外,如果该字段名为
password
,请检查 AuthComponent 是否尚未对其进行哈希处理。编辑: 在 3.x 中,请参阅
DefaultPasswordHasher::hash()
相反,如 散列密码。Have you tried the
AuthComponent::password()
method instead?Also, if the field is named
password
, check that AuthComponent hasn't already hashed it.Edit: In 3.x, see
DefaultPasswordHasher::hash()
instead, as explained in Hashing Passwords.应为
Security::hash($password, 'sha1', true)
您可以将第二个参数保留为 NULL,因为 Auth 使用与 Security 中指定的相同的哈希值。
should be
Security::hash($password, 'sha1', true)
you can leave the second parameter NULL because Auth use the same hash as specified in Security.