Задать вопрос
@kirill-93

Laravel Token mismatch exception?

Есть страница, на странице много функционала через ajax. Все post запросы проверяются на csrf. Через определенное время, если не перезагружать страницу, аякс запросы перестают работать, потому что токен изменился.
Что делать в этом случае? Может убрать из проверки ajax запросы?
  • Вопрос задан
  • 1980 просмотров
Подписаться 3 Оценить 2 комментария
Решения вопроса 2
@Zend_Arbitr
Просто время жизни токена прописано в 2 часа по умолчанию. Это ВЫ можете увидеть в Illuminate\Foundation\Http\Middleware\VerifyCsrfToken в методе addCookieToResponse.
protected function addCookieToResponse($request, $response)
	{
		$response->headers->setCookie(
			new Cookie('XSRF-TOKEN', $request->session()->token(), time() + 60 * 120, '/', null, false, false)
		);

		return $response;
	}

Вам нужно в App\Http\Middleware\VerifyCsrfToken перегрузить метод со своими данными. Вот рабочий пример, берем время из конфига (там указано в минутах, как и принято в ларавелевском конфиге), переводя в секунды:
protected function addCookieToResponse($request, $response)
    {
        $response->headers->setCookie(
            new Cookie('XSRF-TOKEN', $request->session()->token(), time() + Config::get("session.lifetime")*60, '/', null, false, false)
        );
        return $response;
    }
Ответ написан
Комментировать
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Можете поставить таймер, который каждые nn секунд будет получать новый токен, и записывать его туда, где вы его храните.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
i_albakov
@i_albakov
Еще можно воспользоваться этим https://github.com/GeneaLabs/laravel-caffeine - отправляет запросы, каждый раз когда время сессии подходит к концу.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы