Laravel-当CSFR错误时,由于POST请求,如何捕获“ HttpExceptions”?

时间:2018-09-28 14:58:51

标签: laravel

因此,用户在一个选项卡上注销,而在另一个选项卡上,他仍“可视地”登录。

例如,现在,用户通过POST路由发送了一个Chat消息,但是服务器响应:

Request Method: POST
Status Code: 419 
exception: "Symfony\Component\HttpKernel\Exception\HttpException"

原因是CSFR值为false,因为用户已注销。

我希望得到与GET Request方法相同的响应。

我得到了:

Request Method: GET
Status Code: 401 
message: "Unauthenticated."

因为用户不再经过身份验证。 (中间件设置为“认证”)

我为什么需要这个?

我想用axios捕获故障,并检查用户是否未经身份验证。如果是这样,则重新加载页面。

但是现在我不知道用户是否未经身份验证,或者他是否试图利用我的页面,但是具有错误的csrf令牌。

1 个答案:

答案 0 :(得分:1)

Handler.php中的当前解决方案

 if ($exception instanceof TokenMismatchException){
     return $request->expectsJson()
            ? response()->json(['message' => 'Invalid CSRF.'], 400)
            : abort(400);
 }