Не работает аутентификация через сессии в базе данных

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
myks1992@mail.ru
Сообщения: 147
Зарегистрирован: 2017.11.15, 23:54

Не работает аутентификация через сессии в базе данных

Сообщение myks1992@mail.ru »

Всем привет. Достаточно странный вопрос, потому что он простой, но однако у меня проблема проблем) Обновил фреймворк с 2.0.9 до 2.0.38 и перешёл на php74. После обновления админка, которая хранит сессии в файлах работает. А вот фронт, который хранит сессии в БД упал. Не могу понять почему... Делал даже прямую аутентификацию:

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

public function actionLogin()
    {
        $user = User::findOne(261);
        Yii::$app->user->login($user,1000*60*60*24);
        
        if (!Yii::$app->user->isGuest) {
            return $this->redirect('index');
            ///return $this->redirect(Yii::$app->homeUrl);
        }
    }
Станица индекса, на которую редирект, если не гость:

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

public function actionIndex()
    {
        var_dump(123);
        var_dump(Yii::$app->user->identity);
        die();
        
        return $this->actionLogin();
    }
На страницу попадает. Значит на 1 секунду он его авторизует. А в Index уже пропадает после запроса. В итоге у меня значения 123 и NULL. Что может быть? Если ставлю страницу

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

return $this->redirect(Yii::$app->homeUrl);
Происходит зацикливание...

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

'user' => [
            'identityClass' => User::class,
            'enableSession' => true,
            'loginUrl' => ['/auth/default/login'],
        ],
Так же пробовал проверить работают ли сами сессии

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

 Yii::$app->session->set('key', 123);

        var_dump(Yii::$app->session->get('key'));
        
Затем пробовал закомментировать установку сессии

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

 //Yii::$app->session->set('key', 123);

        var_dump(Yii::$app->session->get('key'));
        
И в ключе key всё равно оставалось 123, значит сессии в базе работают, но аутентификация не проходит. В чём может быть проблема?

Сессии подключаю:

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

'session' => [
            'class' => 'yii\web\DbSession',
            'timeout' => intval($params['sessionTimeout']) ?: 180 * 60, // 180 мин
            'sessionTable' => '{{%auth_session}}',
            'writeCallback' => function ($session) {
                $loginTime = null;
                if (!Yii::$app->user->isGuest) {
                    $loginTime = Yii::$app->user->identity->getLastLogin();
                }
                return [
                    'user_id' => Yii::$app->user->id ?: 0,
                    'ip' => Yii::$app->request->userIP,
                    'login_time' => $loginTime,
                ];
            }
        ],
Последний раз редактировалось myks1992@mail.ru 2020.10.13, 18:07, всего редактировалось 5 раз.
unknownby
Сообщения: 749
Зарегистрирован: 2019.11.05, 16:34
Контактная информация:

Re: Не логинится после обновления!

Сообщение unknownby »

myks1992@mail.ru писал(а): 2020.10.07, 22:39 Обновил фреймворк с 2.0.9 до 2.0.38 и перешёл на php74.
После такого большого обновления, нужно почитать changelog, там иногда много полезной информации. ;)
myks1992@mail.ru
Сообщения: 147
Зарегистрирован: 2017.11.15, 23:54

Re: Не логинится после обновления!

Сообщение myks1992@mail.ru »

unknownby писал(а): 2020.10.08, 10:59
myks1992@mail.ru писал(а): 2020.10.07, 22:39 Обновил фреймворк с 2.0.9 до 2.0.38 и перешёл на php74.
После такого большого обновления, нужно почитать changelog, там иногда много полезной информации. ;)
Я в курсе всего) Ошибка не типичная. Сейчас ещё есть данные. Если сессии в базе, то они не работают. В файлах работает. ОЧень странно
Ответить