Yii2 Никогда не выходить из системы - PullRequest
0 голосов
/ 16 января 2019

Пользователи в Yii выходят из системы автоматически, если закрывают браузер или простаивают около суток (возможно, меньше, я не уверен).Можно ли их никогда не выходить из системы (или хотя бы на долгое время в течение месяца или года).Не уверен, что параметры Session или Cookie нужно изменить.

Я попытался изменить параметры.

'components' => [
    'session'=>[
        'class' => 'yii\web\Session',
        'cookieParams' => ['httponly' => true, 'lifetime' => 3600 * 4* 365],
        'timeout' => 3600*4 *365,
        'useCookies' => true
    ],
]

Я попробовал параметры ini php сессии:

session_set_cookie_params(0);
ini_set('session.gc_maxlifetime', 0);

И я попытался установить параметры входа в систему

 Yii::$app->user->login($user, 31536000);

Ответы [ 2 ]

0 голосов
/ 16 января 2019

Сохранение сессии в течение такого длительного времени может быть плохой идеей - данные неактивных сеансов будут потреблять ресурсы вашего сервера и могут замедлять некоторые операции. В Yii есть специальная функция для таких случаев - вы можете установить $enableAutoLogin на true:

'user' => [
    'enableAutoLogin' => true,
    // ...
],

И на login() время ожидания вызова для идентификационного файла cookie:

Yii::$app->user->login($user, 31536000);

Он установит специальный cookie-файл (действительный в течение года) с идентификационной информацией, который автоматически авторизует пользователя по истечении срока его сеанса. Таким образом, вам не нужно хранить данные сеанса на вашем сервере в течение года, но с точки зрения пользователя похоже, что он всегда входит в систему (даже если в фоновом режиме создается новый сеанс).

0 голосов
/ 16 января 2019

Параметры, которые вы использовали, должны работать без параметров timeout и useCookies, я использовал его в своем последнем проекте, где сеанс должен был длиться минимум неделю, откройте вкладку хранилища в панели разработчика Mozilla и нажмите на кукиСлева вы увидите раздел файлов cookie с файлами cookie, зарегистрированными для вашего сайта, в моем случае это http://www.kp2.local

enter image description here

если вы используете 'lifetime' => 7 * 24 * 60 * 60,, он должен показывать cookie с датой истечения срока действия 1 неделя спустя т.е. Wed, 23 Jan 2019 как показано ниже

enter image description here

и если вы закомментируете код, а затем выйдете из системы и снова войдете в систему, она покажет вам время истечения Session, как

enter image description here

Вам просто нужно использовать следующие настройки в конфигурации

'session' => [
    // this is the name of the session cookie used for login on the frontend
    'name' => 'advanced-frontend',
    'cookieParams' => [
        'httpOnly' => true,
        'lifetime' => 7 * 24 * 60 * 60
    ],
],

Если это все еще не работает, выйдите из системы, попробуйте удалить все куки один раз, выбрав опцию Delete all, как визображение ниже.

https://i.imgur.com/49GkznS.png?2

и оно будет работать.

Примечание: выследует изменить 7 в 'lifetime' => 7 * 24 * 60 * 60, на количество дней, в течение которых вы хотите сохранить сеанс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...