laravel 5.5,表单中包含有token的情况下依然抛出TokenMismatchException错误?

交代服务器环境
Centos 7.4 1708 64位
php v7.1.11
session保存在redis中

本地测试windows环境下没问题,线上就一直是这个样子

问题复现在这里
表单提交时报错TokenMismatchException
表单中放置了 {{ csrf_field() }}
web页面中也有<input type="hidden" name="_token" value="U30e1OBTyGCQMobl4D0rKrqqIbdc23Im3cs3zRcN">
看下图,post中也有_token数据

所以这个错误产生的原因是什么呢?该怎么解决?

图片描述

阅读 4.7k
3 个回答

已经解决了。
以后这种问题为大家提供一个解决思路。

  1. 检查表单中是否有{{ csrf_field() }}
  2. 检查session中是否含有_token,特别是session存储位置更换过的。
  3. 尝试清理浏览器缓存和Cookie

    composer dump-autoload
    php artisan optimize
    php artisan cache:clear
    php artisan config:clear
    php artisan route:clear
    php artisan view:clear
  4. 检查是否设置了SESSION_DOMAIN,并且当前host要和domain一致
  5. 实在不行移步Illuminate\Foundation\Http\Middleware\VerifyCsrfToken,慢慢Debug
新手上路,请多包涵

刚刚到楼主提供的地址, register 表单提交后问题重现, 很可能是 storage 目录的权限问题

可以思考方向:

  1. 因为csrf是用的session,因此关系到域名,请看下 config/session.phpdomain 是否有问题。
  2. storage 目录的权限问题
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题