因此,我尝试登录,但是当密码与数据库中的哈希值进行比较时,ti 返回 false。而且我 100% 确定密码是正确的。 这是我的 User.php:
public function validatePassword($password)
{
if ($this->findByUsername($this->username)->password) {
return Yii::$app->security->validatePassword($password, $this->findByUsername($this->username)->password);
} else {
return false;
}
}
public function setPassword($password)
{
$this->password = Yii::$app->security->generatePasswordHash($password);
}
更具体地说,函数 Yii::$app->security->validatePassword() 返回 false。函数password_verify() 始终返回false。为什么?我应该怎么办?我做错了什么。 还有一则信息。这是我的RegistrationForm.php
public function register()
{
if ($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->password = Yii::$app->security->generatePasswordHash($this->password);
if ($user->save()) {
return $user;
}
}
}
为什么不进入if()?为什么不验证?请帮忙。
所以,在多次 var_dump() 之后,有一个问题出现在 validatePassword() 中的 LoginForm() 中。
public function validatePassword($attribute, $params)
{
if (!$this->hasErrors()) {
$user = $this->getUser();
if (!$user || !$user->validatePassword($this->password)) {
$this->addError($attribute, 'Incorrect username or password.');
}
}
}
第二个 if() !$user->validatePassword($this->password) 为 true。为什么?这是真的吗?请解释一下。