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的主要内容,如果未能解决你的问题,请参考以下文章

laravel 配置多域名最简单的方法

一张图laravel - 防范CSRF攻击

laravel 5 csrf_token 值为空

所有 POST 请求上的 Laravel 4 CSRF

Laravel + Vue.js (axios) - CSRF 令牌不匹配

laravel 7 csrf 令牌不匹配