我正在创建一个包含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-> check(password_again,password_hash)将验证密码是否与您匹配。
DefaultPasswordHasher
使用PHP的password_hash函数,默认情况下每次使用带有不同盐的blowfish算法,导致每次调用都有不同的散列。
public function checkPassword($passedPassword, $actualPassword) {
if ((new DefaultPasswordHasher)->check($passedPassword, $actualPassword)) {
return true;
} else {
return false;
}
}