捕获TokenMismatchException

时间:2016-12-15 11:32:38

标签: php laravel

有时,当AND te.fbId = ? Cookie过期且我仍在页面上时,我会登录并收到laravel_session错误。这是可以理解的。

我想处理这种情况,例如通过向用户显示某种错误并重定向。如果可能的话,我想只为登录请求捕获它。

主要问题是CSRF令牌由全局中间件检查,因此在我可以在控制器操作中使用TokenMismatchException块处理错误之前抛出错误。

另一个问题是try-catch目录中的 VerifyCsrfToken.php ,如下所示:

app/Http/Middeware

我无法看到如何使用上面的代码来捕获class VerifyCsrfToken extends BaseVerifier { /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ // ]; } 。好像我只能排除特定的URI。

我有什么方法可以做到吗?

1 个答案:

答案 0 :(得分:2)

转到 app \ Exceptions \ Handler.php 并按以下方式测试:

//Add this to render() method:

if ($exception instanceof TokenMismatchException) {
   return $this->handleTokenMismatchException($exception);
}

// then...

protected function handleTokenMismatchException(TokenMismatchException $exception) {

    // What you gonna do about it e.g. return redirect('/somewhere');

}