TokenMismatchException

TokenMismatchException

这个问题已经有了答案:
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!']);
    }
}

尽管如此,你可能想根据你在应用程序中处理错误的方式来调整它。

09-28 06:02