Laravel VerifyCsrfToken 报错解决

来源:互联网 发布:oracle数据库教程pdf 编辑:程序博客网 时间:2024/06/05 18:10

①. 报错情况

  • form 表单进行 post 方式提交数据时,遇到如下的报错情况
TokenMismatchException  in VerifyCsrfToken.php line 67:in VerifyCsrfToken.php line 67at VerifyCsrfToken->handle(object(Request), object(Closure))

post 数据提交报错

②. 原因

  • Laravel 推荐在全局注册 VerifyCsrfToken 的 Middleware ,对所有 Post,Put,Delete 请求自动校验是否带合法的 _csrf token

③. 解决方法

方法 (1)

  • 在form表单中添加如下的隐藏域代码
<input type="hidden" name="_token" value="{{ csrf_token() }}" />

方法 2

  • 在form表单中添加 csrf_field (与上述解决方法功能一致)
{!! csrf_field() !!}

方法 3

  • 注释 Kernel.php 代码
    打开 app\Http\Kernel.php,在文件中注释掉下面的代码
\App\Http\Middleware\VerifyCsrfToken::class

方法 4

  • 修改handle()方法
    打开 \app\Http\Middleware\VerifyCsrfToken.php,添加或修改 handle()方法如下:
 public function handle($request, \Closure $next)    {        // 使用CSRF        //return parent::handle($request, $next);        // 禁用CSRF        return $next($request);    }

③. 补充 csrf 介绍

csrf  图解释义

参考文章

  • 1. Laravel 5.3 文档 - CSRF攻击原理及其防护
  • 2. Laravel 5.3 文档 - HTTP层 CSRF保护