我使用此语句用Phalcon散列密码:
$ hashedPassword = $ this-> security-> hash($ password)
但是此语句使用相同的密码返回不同的结果。
例:
设置$ password = 123
我得到$ hashedPassword,其中包含以下值:
$ 2A $ 08 $ T2Rf9IcQHTj7TpY.gsfGiexZ35 / KK9kS3fLElxaw8LGXhjnE01f5K 和 的 $ 2A $ 08 $ E2mjApECMbRKQFZodgLkEOpDLSV / tEjTe1HV3q2LLG9UINj9M9GBm 和 的 $ 2A $ 08 $ aZmgsMmG2xRueVzP6tkx2ucWGPZMzUwIccXbLJnqoRwDsSnT4zc.q
以下是我用来检查用户密码的代码,
请让我知道我错过了什么。
if ($this->request->isPost() == true)
{
$email = $this->request->getPost ("email");
$password = $this->request->getPost ("password");
$conditions = "email = ?1 AND admin = ?2";
$parameters = array(1 => $email, 2 => 1);
$users = Users::findFirst(array(
$conditions,
"bind" => $parameters
));
if($users)
{
$security = new Phalcon\Security();
$checkHashValue = $security->checkHash($password, $user->password);
if($checkHashValue)
{
$this->flash->success($users->fullname);
}
else
{
//Print debug information
$hash = $security->hash($password);
$checkHash = $security->checkHash($password, $hash);
$this->flash->error("Password: ". $password.
"<br/>Hash: " . $hash . "<br/>Check Hash: " . $checkHash .
"<br/>Check HashValue: ". $checkHashValue);
}
}
else
{
$this->flash->error($password);
}
}
解决方案:我的变量中有一个拼写错误&#34; user&#34;而不是&#34;用户&#34;。
答案 0 :(得分:1)
它是如何工作的。它每次都会创建一个随机哈希。要使用security->checkPassword()
答案 1 :(得分:0)
解决方案:我的变量“user”中有一个拼写错误,而不是“用户”。