cakephp sha1密码保存在mysql中

时间:2011-09-22 06:11:16

标签: cakephp sha1

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

无论如何,我遇到了问题,生成的sha1密码与正在保存的密码不同。

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

  

TEMP PASSWORD - lHQcVp4(来自功能)   块引用

     

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

     

验证密码密码 - 93df9bd251620d0634235c22f4ab6fe9ad5421f4(FROM:$ this-> Auth->密码($ user ['User'] ['tmp_password']);)

     

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

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

为什么它会以不同的方式出现3次?我无法解决这个问题。很奇怪。

三江源

1 个答案:

答案 0 :(得分: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为您处理散列。