Не работает Yii::$app->getSecurity()->validatePassword

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Не работает Yii::$app->getSecurity()->validatePassword

Сообщение Bezlepkin »

Привет! Решил хранить пароль в отдельной таблице от user.
В модели UserCredential

Генерирую пароль

Код: Выделить всё

public function setPassword($password)
{
    $this->password_hash = Yii::$app->security->generatePasswordHash($password);
}
Тут же проверяю

Код: Выделить всё

public function validatePassword($password)
{
    if (Yii::$app->getSecurity()->validatePassword($password, $this->password_hash))
        return true;
}
Всегда возвращается false.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Не работает Yii::$app->getSecurity()->validatePassword

Сообщение ElisDN »

Длину VARCHAR проверьте.
Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Re: Не работает Yii::$app->getSecurity()->validatePassword

Сообщение Bezlepkin »

ElisDN писал(а): 2017.06.23, 18:59 Длину VARCHAR проверьте.
255
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Не работает Yii::$app->getSecurity()->validatePassword

Сообщение samdark »

Занятно. Версию PHP, ОС и наличие/отсутствие mcrypt, openssl в студию.
Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Re: Не работает Yii::$app->getSecurity()->validatePassword

Сообщение Bezlepkin »

samdark писал(а): 2017.06.23, 19:21 Занятно. Версию PHP, ОС и наличие/отсутствие mcrypt, openssl в студию.
php 7.0.15-0
OC ubuntu0.16.04.4
mcrypt support enabled
OpenSSL support enabled
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Не работает Yii::$app->getSecurity()->validatePassword

Сообщение samdark »

Это мегастранно потому что в PHP7 там вызывается password_hash() и password_verify() напрямую. Ну и хеш состоит из 60 символов, так что, если у вас длина 255, ничего не обрезается. Может кодировка в базе какая-то странная?
Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Re: Не работает Yii::$app->getSecurity()->validatePassword

Сообщение Bezlepkin »

samdark писал(а): 2017.06.23, 20:02 Это мегастранно потому что в PHP7 там вызывается password_hash() и password_verify() напрямую. Ну и хеш состоит из 60 символов, так что, если у вас длина 255, ничего не обрезается. Может кодировка в базе какая-то странная?
А это правильно что при каждой генерации хэша из одного пароля, хэш каждый раз разный.
mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: Не работает Yii::$app->getSecurity()->validatePassword

Сообщение mkramer »

Bezlepkin писал(а): 2017.06.24, 11:43 А это правильно что при каждой генерации хэша из одного пароля, хэш каждый раз разный.
Да, хеш генерируется с разной солью.
Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Re: Не работает Yii::$app->getSecurity()->validatePassword

Сообщение Bezlepkin »

А влияет итерфейс IdentityInterface на работут с генерацией и валидацией пароля класса Security?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Не работает Yii::$app->getSecurity()->validatePassword

Сообщение samdark »

Нет, не влияет.
Аватара пользователя
Bezlepkin
Сообщения: 731
Зарегистрирован: 2012.11.10, 18:59
Контактная информация:

Re: Не работает Yii::$app->getSecurity()->validatePassword

Сообщение Bezlepkin »

А по какому принципу он сверяет хэши если хэш всегда разный?
mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: Не работает Yii::$app->getSecurity()->validatePassword

Сообщение mkramer »

Алгоритм и соль password_hash сохраняет вместе с хешем, и потом пересчитывает нехешированный пароль с той же солью и тем же алгоритмом. Если бы была проблема ферймворка, то тут бы все уже голосили :) Такой код для пароля все пишут. Надо копать в твоём коде что-то.
Ответить