我无法在任何地方找到如何验证密码后用随机盐哈希我的代码哈希密码:
public function hashPassword($password){
$options = [
'cost' => 11,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];
return password_hash($password, PASSWORD_BCRYPT, $options);
}
要检索的代码:
public function validatePassword($password){
return password_verify($this->password, self::model()->password);
}
但它似乎没有用,也许任何人都可以让我知道为什么?
答案 0 :(得分:1)
您实际上并未在validatePassword函数中使用$password
参数。注意:$password
应该是输入的纯文本密码,第二个参数应该包含您先前存储的散列版本。试试这个:
public function validatePassword($password){
return password_verify($password, self::model()->password);
}
此外,最好不要自己处理盐渍。只需使用PASSWORD_DEFAULT
选项,不要加盐。 PHP会处理它。如果PHP版本升级更改了默认值,您可以使用password_needs_rehash()
检查是否需要重新密码。
答案 1 :(得分:0)
再次以完全相同的方式对其进行哈希并比较2个字符串。这是大多数密码的比较方式。