laravel 多域 csrf tokenmismatch
Posted
技术标签:
【中文标题】laravel 多域 csrf tokenmismatch【英文标题】:laravel multiple domains csrf tokenmismatch 【发布时间】:2017-10-14 17:25:53 【问题描述】:我正在构建一个具有两个域(sub1.domain.com 和 sub2.domain.com)的系统。这两个域使用完全相同的系统。我使用两个域的唯一原因是为了让用户更清楚地了解名称。
在 sub1.domain.com 上一切正常,但在 sub2.domain.com 上我收到 CSRF TokenMismatch 错误。
我尝试以两种不同的方式实现 CORS,制作 my own middleware 和使用 standard composer package for laravel。 这两个解决方案似乎不起作用。
我还尝试在config/session.php
中定义一个域。 (子域和***域)。但是当我尝试这样做时,整个登录停止工作,我被重定向回登录页面而没有任何消息。 (使用错误凭据时我确实收到了错误消息)
一些想法?
提前致谢!
【问题讨论】:
我相信这正是 CSRF 所保护的。它要么保护你自己免受 CSRF 的伤害,要么让它按照你的方式工作。 是的,但他们使用完全相同的代码库,它只是第二个域名。它是链接到同一目录的两个 vHost。我认为双方的 csrf 逻辑是相同的。 csrf 也适用于我的本地域和我的公共域,而无需更改任何内容。 【参考方案1】:我有同样的问题,对于一个域,csrf 正在工作,但对于另一个域,我收到连接超时。我找到的唯一解决方案是在 VerifyCSRFTtoken 控制器中添加 CSRF 验证异常。我的控制器现在看起来像这样:
class VerifyCsrfToken extends Middleware
protected $except = [
'/routename',
];
这不是最好的解决方案,但可以快速修复。寻找更好的想法。
【讨论】:
以上是关于laravel 多域 csrf tokenmismatch的主要内容,如果未能解决你的问题,请参考以下文章