Смена пароля не чего не дает.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
webplus
Сообщения: 228
Зарегистрирован: 2012.02.24, 22:05
Контактная информация:

Смена пароля не чего не дает.

Сообщение webplus » 2019.05.16, 19:49

Здравствуйте.
Делаю авторизацию на сайте, захожу под паролем в браузере хром и еще открываю вкладку в режиме инкогнито и там под этим юзером авторизируюсь. Потом в инкогнито вкладке меняю пароль. Потом обновляю первую вкладку и авторизация так и осталась, а должна была слететь.
В базе данных поле authKey меняется при смене пароля.
Т.е. если кто то узнал мой пароль, и вошел с другого компа, потом я на своем компе пароль сменил, то у него авторизация так и останется. Смена пароль с аускэй не чего не дает.

Аватара пользователя
SiZE
Сообщения: 2683
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Смена пароля не чего не дает.

Сообщение SiZE » 2019.05.17, 09:26

Авторизация на куках?

getAuthKey(): it returns a key used to verify cookie-based login. The key is stored in the login cookie and will be later compared with the server-side version to make sure the login cookie is valid.
в поиске работы

Аватара пользователя
webplus
Сообщения: 228
Зарегистрирован: 2012.02.24, 22:05
Контактная информация:

Re: Смена пароля не чего не дает.

Сообщение webplus » 2019.05.17, 11:24

SiZE писал(а):
2019.05.17, 09:26
Авторизация на куках?

getAuthKey():
в модели user все это есть:

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

    public function getAuthKey()
    {
        return $this->auth_key;
    }

    /**
     * {@inheritdoc}
     */
    public function validateAuthKey($authKey)
    {
        return $this->getAuthKey() === $authKey;
    }
Но при смене пароля auth_key меняется, но при этом во втором браузере авторизация не слетает, а остается!
Может надо добавить где то в rules validateAuthKey , так почему изначально в дефолтную модель User оно не добавлено!

Попробовал даже вариант с хранением сессий в базе yii\web\DbSession но все тоже, авторизация на всех компах, хоть и сменил пароль.

Я даже для интереса попробовал войти в личный кабинет сайта https://yiiframework.ru с двух браузерах и сменить в одном пароль, так в другом браузере авторизация так и осталась.

Аватара пользователя
maleks
Сообщения: 1706
Зарегистрирован: 2012.12.26, 12:56

Re: Смена пароля не чего не дает.

Сообщение maleks » 2019.05.17, 12:42

webplus писал(а):
2019.05.17, 11:24
Может надо добавить где то в rules validateAuthKey , так почему изначально в дефолтную модель User оно не добавлено!
Эта проверка имеется тут, пологируйте метод этот, что туда попадает


Аватара пользователя
webplus
Сообщения: 228
Зарегистрирован: 2012.02.24, 22:05
Контактная информация:

Re: Смена пароля не чего не дает.

Сообщение webplus » 2019.05.17, 18:09

ElisDN писал(а):
2019.05.17, 17:53
viewtopic.php?f=19&t=20828&p=237106#p237086
Прочитал.
У меня ситуация такая. Достался мне проект на доработку,, до этого им другой прогер занимался, и он авторизировался как админ и сохранил сам куки. Теперь я проектом занимаюсь, я сменил пароль, но этот первый прогер по старому кокеесу успешно авторизируется. Я менял authkey но толку нет.
Авторизация пропадает когда браузер закрыть, но если потом открыть firefox с расширением edit cockies и вставить куки то можно авторизироваться успешно.

Как в laravel фреймворке с этим дела, может кто знает?

Аватара пользователя
webplus
Сообщения: 228
Зарегистрирован: 2012.02.24, 22:05
Контактная информация:

Re: Смена пароля не чего не дает.

Сообщение webplus » 2019.05.17, 21:29

Провел эксперимент!
Взял для теста сам сайт https://www.yiiframework.ru - потому что он реализован на yii2
Авторизировался на нем в браузере хром, потом зашел в настройки браузера и скопировал кукки в текстовый файл.
Потом авторизировался через браузер firefox.
Потом в хроме сменил пароль в аккаунте.
Потом обновил firefox - но авторизация так и осталась.
Потом ушел на два часа, вернувшись открыл firefox и авторизация так и была, я думал может время ее истечет.
Потом для теста открыл в firefox приватный режим и зашел на сайта, и через расширение edit cockie ввел тот старый (со старым authKey - потому что он в базе поменялся когда я пароль менял) до изменения пароля с файла ввел кукки. И вошел успешно в личный кабинет.

Мне yii2 нравится. Но авторизация меня очень расстраивает и пугает!

Аватара пользователя
webplus
Сообщения: 228
Зарегистрирован: 2012.02.24, 22:05
Контактная информация:

Re: Смена пароля не чего не дает.

Сообщение webplus » 2019.05.18, 11:44

вот статья Alexander Makarov - (Authentication) - https://github.com/yiisoft/yii2/blob/ma ... ication.md
в ней он приводит пример:

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

class User extends ActiveRecord implements IdentityInterface
{
    ......

    public function beforeSave($insert)
    {
        if (parent::beforeSave($insert)) {
            if ($this->isNewRecord) {
                $this->auth_key = \Yii::$app->security->generateRandomString();
            }
            return true;
        }
        return false;
    }
}
По идеи как только сменился auth_key то сразу должно разлогинеть, потому что в кукки остается старый auth_key , а в базе мы поменяли его и тут же при обновлении страницы должно сработать validateAuthKey($authKey) и увидеть что в кукки auth_key не соответствует тем что в базе у юзера.
Мне бы хотелось чтобы кто то из разработчиков yii2 дал мне хоть короткий ответ.

Аватара пользователя
webplus
Сообщения: 228
Зарегистрирован: 2012.02.24, 22:05
Контактная информация:

Re: Смена пароля не чего не дает.

Сообщение webplus » 2019.05.18, 12:45

webplus писал(а):
2019.05.18, 11:44

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

    public function beforeSave($insert)
    {
        if (parent::beforeSave($insert)) {
            if ($this->isNewRecord) {
                $this->auth_key = \Yii::$app->security->generateRandomString();
            }
            return true;
        }
        return false;
    }
в этом примере только при создании (isNewRecord) создается auth_key.
Но в своем проекте я при изменении пароля вызываю из модели User - generateAuthKey() и разлогирование так и не происходит!

Аватара пользователя
maleks
Сообщения: 1706
Зарегистрирован: 2012.12.26, 12:56

Re: Смена пароля не чего не дает.

Сообщение maleks » 2019.05.18, 15:53

webplus писал(а):
2019.05.18, 11:44
Мне бы хотелось чтобы кто то из разработчиков yii2 дал мне хоть короткий ответ.
Почему вы не хотите сами подебажить и выяснить что там за отличная от ожидаемой логика или может баг это?

Аватара пользователя
webplus
Сообщения: 228
Зарегистрирован: 2012.02.24, 22:05
Контактная информация:

Re: Смена пароля не чего не дает.

Сообщение webplus » 2019.05.18, 21:03

maleks писал(а):
2019.05.18, 15:53
Почему вы не хотите сами подебажить и выяснить что там за отличная от ожидаемой логика или может баг это?
Исправил!
Создал компонент https://github.com/borysenko/yii2-user-component - устанавливается через composer.

Оказывается валидация auth_key не где не запускалась!

Протестируйте кому не лень. В двух разных браузерах залогиньтесь и в одном смените пароль с auth_key, разлогинет сразу в обеих при смене auth_key.

Может пригодится кому то!

Ответить