@freeeeez

Как разобраться с ошибкой TokenMismatchException in VerifyCsrfToken.php?

Ошибка "TokenMismatchException in VerifyCsrfToken.php" возникает, если после длительного простоя (например после выходных) с открытой страницы идет AJAX запрос к контроллеру. Оказывается в это время токен уже другой, как обычно происходит, если время жизни сессии установлено в стандартные 120 минут. Однако настройки файла session.php содержат следующую строку:

'expire_on_close' => true

Как я понял, данная конструкция должна игнорировать установку 'lifetime' => 120 и закрывать сессию и токен при закрытии браузера, но это не работает. Изначально стояло false - тоже самое. Как можно заставить хранить токен до закрытия браузера или если это не возможно, как в AJAX запросе послать обратно новый token и отправить повторный AJAX с новым токеном?
  • Вопрос задан
  • 538 просмотров
Решения вопроса 1
miraage
@miraage
Старый прогер
/**
     * Get the cookie lifetime in seconds.
     *
     * @return \DateTimeInterface
     */
    protected function getCookieExpirationDate()
    {
        $config = $this->manager->getSessionConfig();

        return $config['expire_on_close'] ? 0 : Carbon::now()->addMinutes($config['lifetime']);
    }


Это всего лишь настройка куки. А у PHP сессии есть еще своё время жизни, которое задается в lifetime.
Можете туда записать что-нибудь вроде 525960 (усредненное количество минут в году за 3 обычных года и один високосный) - будет год храниться.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы