处理 ajax 请求的 TokenMismatchException
Handle TokenMismatchException for ajax request
我正在使用 ajax 将我的请求发送到服务器,有时我可能会在服务器上收到 TokenMismatchException。现在,我想在后端和前端都处理这个问题。为此,我使用了来自 :
的参考
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令牌以重新发送请求。
但我收到一条错误消息:
Call to undefined method Illuminate\Session\TokenMismatchException::getStatusCode()
有什么想法可以处理 ajax 请求的这个异常吗?
TokenMismatchException 是一个非 Http 异常,因此它不会 return 它的状态代码。您可以根据要求重定向到所需的视图或登录页面。
Laravel令牌未匹配异常码为419,可以直接使用419代替$exception->getStatusCode()
我正在使用 ajax 将我的请求发送到服务器,有时我可能会在服务器上收到 TokenMismatchException。现在,我想在后端和前端都处理这个问题。为此,我使用了来自
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令牌以重新发送请求。
但我收到一条错误消息:
Call to undefined method Illuminate\Session\TokenMismatchException::getStatusCode()
有什么想法可以处理 ajax 请求的这个异常吗?
TokenMismatchException 是一个非 Http 异常,因此它不会 return 它的状态代码。您可以根据要求重定向到所需的视图或登录页面。
Laravel令牌未匹配异常码为419,可以直接使用419代替$exception->getStatusCode()