这个问题已经有了答案:
Laravel catch TokenMismatchException
4答
我遇到了向用户抛出csrf异常的问题。它们发生的原因完全是无辜的,比如如果有人在最后提交表单时花费太长时间来填写表单,则会话已过期,令牌不匹配。很明显这是一个错误,但它不需要杀死所有东西并抛出异常。
有没有一种方法可以让它设置一个flash消息,然后重定向回原来的页面。我不想禁用csrf保护,我只想让错误处理得更优雅一点。
最佳答案
这有点麻烦,我通常在verifycsrftoken类中添加一个方法来捕获tokenmismatchexception(在中间件文件夹中):
public function handle($request, Closure $next)
{
try
{
return parent::handle($request, $next);
}
catch(TokenMismatchException $e)
{
return redirect()->back()->withInput()->withErrors(['tokenMismatch' => 'Have you been away? Please try submitting the form again!']);
}
}
尽管如此,你可能想根据你在应用程序中处理错误的方式来调整它。