У меня возникает проблема, когда пользователь простаивает более 24 часов (мой тайм-аут сеанса) или покидает сайт, а затем возвращается через 24 часа, они не выходят из системы сайт, но их сессия истекла, или, по крайней мере, их _token больше не действует.Laravel TokenMismatchException session timeout
Это приводит к нежелательному поведению, как будто пользователь отправляет форму после истечения срока их действия, и теперь они получают TokenMismatchException
.
Локально кажется, что, когда время простоя превышает продолжительность сеанса, пользователь выходит из системы, однако при производстве на реальном сервере это не так, время простоя может превзойти время жизни сеанса, и все же пользователь все еще регистрируется in и Auth::check()
и Auth::user()
функционируют как ожидалось, если пользователь вошел в систему.
Что привело бы к тому, что пользователь не вышел из системы, даже если срок их сессии истек?
Есть ли способ проверить, что срок действия сеанса истек, и затем я могу вручную зарегистрировать пользователя с сообщением с просьбой вернуться к нему?
Я попытался использовать фильтр App::before
, чтобы проверить last_activity в сеансе и определить, истек ли он, но по истечении срока действия сеанса у меня больше нет доступа к нему, поскольку он был удален из базы данных, поэтому я не может сравнивать временные метки, чтобы определить, требуется ли пользователю вручную выходить из системы и запрашивать повторный вход в систему.
Моя сессия конфигурации:
'driver' => 'database',
'lifetime' => 1440,
'expire_on_close' => false,
Спасибо.
У вас есть конфиг/производство/файл session.php, который может быть переопределение значения по умолчанию? – Laravelian
Нет У меня есть только config/local/session.php для dev, а затем по умолчанию config/session.php для производства. Я должен добавить, что эти два зеркала друг друга, кроме того, для значения «время жизни», которое намного короче в dev для тестирования. – Vigs
Это точно проблема лица. Вы нашли решение или обходное решение? – lunacafu