【问题标题】:cakephp sha1 password saving in mysqlcakephp sha1密码保存在mysql中
【发布时间】:2011-09-22 06:11:16
【问题描述】:

我忘记了我的 cakephp 应用程序中的密码功能。此功能将请求电子邮件地址,找到该用户,生成新密码,将其转换为 sha1 并将其保存到数据库,将内容通过电子邮件发送给用户。

无论如何我都有问题,生成的 sha1 密码与保存的密码不同。

我已将信息显示在屏幕上以显示正在发生的事情:

临时密码- lHQcVp4(来自函数) 块引用

SHA1 密码- 0ee4ae757733f458b9e395a8457c2ef307af99f0 (FROM sha1($user['User']['tmp_password']);

Auth Password PASSWORD- 93df9bd251620d0634235c22f4ab6fe9ad5421f4 (FROM: $this->Auth->password($user['User']['tmp_password']);)

保存密码后的数据库记录- 13ef648db45cc62b593c3943646806af06846016 (FROM $this->User->field('password');)

我保存数据如下:$this->User->save($user, false)

为什么 3 次都不一样?我无法解决。很奇怪。

谢谢

【问题讨论】:

    标签: cakephp sha1


    【解决方案1】:
    sha1($user['User']['tmp_password'] 
    

    这将简单地散列密码并输出文本

    $this->Auth->password($user['User']['tmp_password']);
    

    这会将密码使用 core.php 中定义的 cakephp salt 进行哈希处理。这就是为什么您会看到差异

    如果您只是将密码值设置为 $user['User']['password'] 并对其调用 save() ,则 Auth 可能会再次对密码进行哈希处理,因为它不知道您已经对其进行哈希处理.您是否尝试过将密码设置为 $user['User']['password'] 并对其调用 save() ?让 Auth 为您处理哈希。

    【讨论】:

    • 谢谢你这工作。我仍然不明白为什么保存会散列密码,但无论如何感谢您的解决方案。
    • 这就是 Auth 组件的工作方式。如果该字段名为“密码”或“密码”,它将自动为您散列密码。更多细节在这里:book.cakephp.org/view/1253/Troubleshooting-Auth-Problems
    猜你喜欢
    • 1970-01-01
    • 2014-12-03
    • 2014-03-26
    • 1970-01-01
    • 2015-08-05
    • 2014-08-16
    • 2015-08-26
    • 2011-03-03
    • 2011-07-15
    相关资源
    最近更新 更多