Как изменить промежуточное ПО laravel, чтобы ajax-запросы не выполнялись из-за истечения времени ожидания сеанса для входа

Я надеюсь, что кто-то может определить эту проблему и сказать мне, где искать, чтобы решить ее. Вот сценарий. Я захожу на свой сайт и некоторое время играю с ним, затем оставляю страницу открытой и ложусь спать. Когда я просыпаюсь, страница все еще открыта. Если я щелкаю ссылку на новую страницу, промежуточное ПО аутентификации распознает, что у меня истекло время сеанса, больше не проходит проверку подлинности, и выводит меня на страницу входа для повторного входа. Отлично, это то, что я хочу.

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

Что я могу изменить, чтобы неудачный запрос ajax по причине отсутствия аутентификации перешел на страницу входа?

1 ответ

Вы можете просто создать отдельное промежуточное ПО под названием ajaxAuthenticationCheck который содержит это в handle метод:

if ($request->ajax() && ! auth()->check()) {
    auth()->logout();
    return redirect()->back();
}

И установите его на каждом маршруте AJAX.

Другие вопросы по тегам