@Slay10

Аутентификация проблема с validatePassword()?

Не могу понять в чем дело validatePassword() всегда вызывает ошибку не зависимо от того правильно введен пароль или нет, делаю так в модели Users генерирую пароль и сохраняю в базу данных методом
public function setPassword($password){
        $this->password = Yii::$app->getSecurity()->generatePasswordHash($password);
    }


пароль создается нормально и записывается в базу данных тоже без проблем теперь сам метод валидации в модели
public function validatePassword($attribute, $params)
    {
        if (!$this->hasErrors()) {
            $user = $this->getUser();
            if (!$user || !Yii::$app->security->validatePassword($this->password, $user->password)) {
                var_dump($this->password . "------------" . Yii::$app->getSecurity()->validatePassword($this->password, $user->password) . "**********" . $user->password);
                $this->addError($attribute, "Пароль или имя пользователя введены неверно");
            }
        }

    }


var_dump выводит следующее Slay------------**********$2y$13$Gnd.7dQCOpajawjRmn0laupNfj8tWAISLfYKazwmYHR
то есть я так понимаю пароль с формы и захешированный пароль с базы данных функция получает правильные только вот ничего не возвращает вместо пустоты между ---*** должен быть 0, и если использовать простой пароль и сохранять его в БД а потом сравнивать проблем нет все работает, может я гдето чтото упускаю или забыл подключить?
  • Вопрос задан
  • 1183 просмотра
Пригласить эксперта
Ответы на вопрос 1
doniys_a
@doniys_a
Backend-разработчик (Php, node.js, python, ruby)
var_dump($this->password . "------------" . Yii::$app->getSecurity()->validatePassword($this->password, $user->password) . "**********" . $user->password);

Никакой 0 возвращаться не может. Ф-я validatePassword возвращает либо true либо false. Она ничего не сохраняет, ничего не обновляет - всего лишь проверяет пришедший пароль и установленный
Из-за того, что вы конкатенируете строку, ничего не выводится.
Выведите так

var_dump($this->password,Yii::$app->getSecurity()->validatePassword($this->password, $user->password), $user->password);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы