CakePHP 3 DefaultPasswordHasher

问题描述 投票:2回答:2

我正在创建一个包含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)将验证密码是否与您匹配。

cakephp hash cakephp-3.0
2个回答
2
投票

DefaultPasswordHasher使用PHP的password_hash函数,默认情况下每次使用带有不同盐的blowfish算法,导致每次调用都有不同的散列。


0
投票
public function checkPassword($passedPassword, $actualPassword) {
    if ((new DefaultPasswordHasher)->check($passedPassword, $actualPassword)) {
        return true;
    } else {
        return false;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.