【发布时间】:2017-12-26 15:29:12
【问题描述】:
自从我将 laravel 更新到 5.4 后,我不断得到:
TokenMismatchException in VerifyCsrfToken.php line 68
抛出异常。经过一些挖掘和阅读大量帖子和 github 问题后,我发现我的令牌不匹配:)。关键是我的 laravel 应用程序设置了令牌“XSRF-TOKEN”的加密版本,而不是其普通 (X-CSRF-TOKEN) 对应项,并且助手 csrf_token() 吐出普通令牌,因此令牌不匹配。令人困惑的是,为什么当我得到 XSRF-TOKEN(缺少 X-)时文档会提到 X-XSRF-TOKEN?所以问题是:
- 缺少的“X-”有什么含义吗?
- 如何将令牌的加密版本更改为普通版本? (不管第 3 个问题)
- 我什至应该尝试从加密的令牌中制作一个普通令牌,还是最好加密
csrf_token()? (这是否重要,因为连接是加密的?) - 在
\MiddleWare\EncryptCookies.php中的$excepted下列出“XSRF-TOKEN”是一个可行的选项,或者您能建议一个更好的解决方案吗? (这让我们回到了问题 #3)
很抱歉有这么多问题,提前感谢!
编辑
在多次重读我的问题后,我得出的结论是它们不够清楚并且不符合标题。我的问题是令牌不匹配,我认为消除我的疑虑会导致我找到解决方案,我感谢@ThomasMoors 的耐心和帮助。我会接受他的回答,虽然我用不同的方式解决了我的问题,但正是他的帮助让我找到了解决方案!我还发布了我自己的答案,其中描述了我如何解决我的问题以帮助其他有类似问题的人!
【问题讨论】:
-
@ThomasMoors 您能否更准确地了解我的服务器如何知道我的令牌是否是我的令牌?私人秘密会起作用吗?您能否建议一个修补选项以激活普通令牌?谢谢
标签: laravel token csrf csrf-protection