php - Laravel 5.1 防止 CSRF 不匹配抛出异常

标签 php laravel laravel-5 laravel-5.1

<分区>

我遇到了向用户抛出 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/

相关文章:

php - MongoDB 更新 : how to check if an update succeeds or fails?

php - 拉维尔 5.6 | PHP artisan 迁移不工作

javascript - 稍后可以在函数中将值绑定(bind)到 Vue 元素吗?

database - 使用对象过滤查询集

php - 从数据库中选择 WHERE 一些参数等于字符串 var 的一部分

PHP mysql查询语法错误

php - redis rpush 多个值不支持 php 动态

php - Laravel facade Slug 不适用于非英语语言?

php - 检查模型是否存在,如果在 Laravel 中没有找到则继续路由

php - 什么是 .phpunit.result.cache