我的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次?我无法解决这个问题。很奇怪。
三江源
答案 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为您处理散列。