3 回答
TA贡献1874条经验 获得超12个赞
嗯,这是一个明显的信息,您可以尝试为该页面制作更好的布局,但仍然最好显示它以便用户知道发生了什么。如果您想以不同的方式处理它,您可以尝试重定向到登录页面。
因此,在您的app\Exceptions\Handler.php文件中的渲染方法中添加以下内容:
if ($exception instanceof \Illuminate\Session\TokenMismatchException) {
return redirect()->route('login');
}
TA贡献1883条经验 获得超3个赞
问题的解决方法比较简单,只需要在VerifyCsrfToken中间件上加一点点;
use Closure;
public function handle($request, Closure $next)
{
if(!Auth::check() && $request->route()->named('logout')) {
$this->except[] = route('logout');
}
return parent::handle($request, $next);
}
通常这个文件只包含一个 $except 路由数组,应该被 csrf 忽略。
在这段代码中,我们覆盖了 handle 方法并执行了两项检查。
用户是访客(即,不使用经过身份验证的会话),并且,
是登出路线的路线
如果两者都为真,那么我们将 'logout' 添加到 except 数组。然后我们将控制权传递给核心 VerifyCsrfMiddleware,它识别阵列中是否存在注销路由,并绕过检查。表单数据正确发布,我们使用 LogoutResponse 重定向。
用户看不到错误页面。
通过这种方式检查,我们确保真正的注销请求仍然受到 CSRF Token 的保护。
- 3 回答
- 0 关注
- 195 浏览
添加回答
举报