Обрабатывать TokenMismatchException для AJAX-запроса.

Я отправляю свои запросы на сервер, используя ajax, и иногда я могу получить TokenMismatchException на сервере. Теперь я хочу справиться с этим как на внутреннем, так и на внешнем интерфейсе. Для этого я использовал ссылку из эта ссылка StackOverflow:

public function render($request , Exception $exception)
{
//TODO Check the following if() block code validity for production server
if ($exception instanceof \Illuminate\Session\TokenMismatchException){
if ($request->expectsJson() ){
return Response::json([
'message'      => 'Token mismatch (CSRF token mismatched)' ,
'message-type' => 'danger' ,
'new_csrf_token' => csrf_token()
], $exception->getStatusCode());
}
return redirect()
->back()
->exceptInput('password')
->with([
'message'      => 'Validation Token was expired. Please try again' ,
'message-type' => 'danger' ,
]);
}

return parent::render($request , $exception);
}

Используя этот ответ JSON, я хочу отобразить сообщение с подсказкой на внешнем интерфейсе, а также обновить токен CSRF для повторной отправки запроса.

Но я получаю сообщение об ошибке:

Вызов неопределенного метода Illuminate \ Session \ TokenMismatchException :: getStatusCode ()

Любые идеи, как мне удается обработать это исключение для запроса AJAX?

2

Решение

Код исключения несоответствия токенов Laravel — 419, вместо него можно использовать 419 $exception->getStatusCode()

1

Другие решения

TokenMismatchException — это исключение, не относящееся к Http, поэтому оно не возвращает код состояния. Вы можете просто перенаправить на желаемый вид или страницу входа в соответствии с требованием.

1

По вопросам рекламы [email protected]