Laravel框架中VerifyCsrfToken报错问题的解决

2018-09-07 12:06

阅读:516

  前言

  本文主要给大家介绍了关于Laravel框架中VerifyCsrfToken报错问题的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

  报错情况

  form 表单进行 post 方式提交数据时,遇到如下的报错情况.

   TokenMismatchException in VerifyCsrfToken.php line 67: in VerifyCsrfToken.php line 67 at 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保护

  总结

  以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。


评论


亲,登录后才可以留言!