密码正确后验证密码为假

问题描述 投票:0回答:1

因此,我尝试登录,但是当密码与数据库中的哈希值进行比较时,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()?为什么不验证?请帮忙。

php yii2
1个回答
0
投票

所以,在多次 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。为什么?这是真的吗?请解释一下。

© www.soinside.com 2019 - 2024. All rights reserved.