<分区>
我遇到了向用户抛出 CSRF 异常的问题。它们的发生是出于完全无辜的原因,例如,如果有人在最终提交表单时填写表单的时间太长, session 已过期并且 token 不匹配。现在显然这是一个错误,但它不需要杀死所有东西并抛出异常。
有没有办法让它设置一个闪现消息并重定向回原始页面。我不想禁用 CSRF 保护,我只想更优雅地处理错误。
<分区>
我遇到了向用户抛出 CSRF 异常的问题。它们的发生是出于完全无辜的原因,例如,如果有人在最终提交表单时填写表单的时间太长, session 已过期并且 token 不匹配。现在显然这是一个错误,但它不需要杀死所有东西并抛出异常。
有没有办法让它设置一个闪现消息并重定向回原始页面。我不想禁用 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!']);
}
}
不过,您可能希望根据处理应用中错误的方式进行调整。
关于php - Laravel 5.1 防止 CSRF 不匹配抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33121192/