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

发布于 2022-09-06 07:56:40 字数 546 浏览 12 评论 0

交代服务器环境
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数据

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

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

时光无声 2022-09-13 07:56:40

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

  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
诗酒趁年少 2022-09-13 07:56:40

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

妄想挽回 2022-09-13 07:56:40

可以思考方向:

  1. 因为csrf是用的session,因此关系到域名,请看下 config/session.phpdomain 是否有问题。
  2. storage 目录的权限问题
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文