我正在创建一个包含password和password_again字段的身份验证表单。所以我可以检查以确保它们匹配,我正在使用UsersTable的beforeSave()函数来处理散列。作为测试,我只是设置它来向我显示password_again,它的散列结果然后死掉。
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->检查(password_again,password_hash)将验证密码是否与您匹配。
答案 0 :(得分:2)
DefaultPasswordHasher
使用PHP的password_hash函数,默认情况下每次使用不同的salt使用blowfish算法,每次调用都会产生不同的哈希值。
答案 1 :(得分:0)
public function checkPassword($passedPassword, $actualPassword) {
if ((new DefaultPasswordHasher)->check($passedPassword, $actualPassword)) {
return true;
} else {
return false;
}
}