今天我们已将PHP从 5.5.7 更新为 5.6.13 ,并且password_hash()
函数的所有密码哈希都已停止工作。
有没有关于为什么会发生这种情况的信息?我们做错了什么?
当我使用密码重置功能创建密码的新哈希时,它再次正常工作。
使用varchar(255)
将密码存储在MySQL数据库中。使用的类是Passwords.php
身份验证如下所示:
// Try to find the user from database
$user = $this->getUser($email);
// If the provided password is invalid
if (!isset($user) || !$user->isPasswordValid($password)) {
throw new AuthenticationException('portal.user.signInFailed');
}
isPasswordValid方法如下所示:
/**
* Validate given User password.
* @param string $value Password to validate
* @return bool
*/
public function isPasswordValid($value)
{
return Passwords::verify($value, $this->password);
}
这就是我的散列函数的样子:
/**
* Set and hash new password value.
* @param string $value New password
* @return static
*/
public function setPassword($value)
{
$this->password = Passwords::hash($value);
return $this;
}
这是更新前(不工作)和密码重置(工作)之后的哈希
$2y$10$wMM1rXjwOIJb8Ga0L0mINevOvZxY4C2ebucBDNZ1P1dkp.J22KGzm
$2y$10$cr6HeWoS2MDxK1tbJvaEjefMiex1RgeG/JrHTrVznN2DeBPVJnVC.
我宁愿不给你密码:)