我遇到向用户抛出 CSRF 异常的问题。发生这种情况的原因完全是无辜的,例如,如果有人在最终提交表单时花了太长时间填写表单,则会话已过期并且令牌不匹配。现在显然这是一个错误,但它不需要杀死所有内容并抛出异常。
有没有办法让它设置一条闪存消息并重定向回原始页面。我不想禁用 CSRF 保护,我只是希望能够更优雅地处理错误。
这有点痛苦,我通常会在VerifyCsrfToken类中添加一个方法来捕获TokenMismatchException(在Middleware文件夹中):
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!']);
}
}
尽管如此,您可能想要根据您处理应用程序中错误的方式进行调整。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)