【发布时间】:2014-09-14 19:46:09
【问题描述】:
我正在创建一个身份验证表单,其中包含密码和 password_again 字段。所以我可以检查以确保它们匹配,我正在使用我的 UsersTable 的 beforeSave() 函数来处理散列。作为测试,我刚刚将它设置为再次向我显示密码,它的哈希结果然后死亡。
public function beforeSave($event, $entity){
debug($entity->password_again);
$hasher = new DefaultPasswordHasher();
$entity->password_again = $hasher->hash($entity->password_again);
debug($entity->password_again);
die();
}
我很好奇为什么每次重新加载结果时哈希值都会不断变化。每次我重新加载它时,我都希望哈希值保持不变。提前致谢。
编辑:所以事实证明,您不应该对两个密码进行哈希处理,然后再尝试比较它们。相反,DefaultPasswordHasher->check(password_again, password_hash) 将验证密码是否与您匹配。
【问题讨论】:
-
关于您的编辑:确切地说,它应该使用这种方法。这也是这个 PHP5.5 代码的 CakePHP2.x 实现在他们的comparison methods:
...->check($value, $dbValue)中所做的事情。
标签: cakephp hash cakephp-3.0