【问题标题】:laravel multiple domains csrf tokenmismatchlaravel 多域 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 也适用于我的本地域和我的公共域,而无需更改任何内容。

标签: php laravel csrf multiple-domains


【解决方案1】:

我有同样的问题,对于一个域,csrf 正在工作,但对于另一个域,我收到连接超时。我找到的唯一解决方案是在 VerifyCSRFTtoken 控制器中添加 CSRF 验证异常。我的控制器现在看起来像这样:

class VerifyCsrfToken extends Middleware
{
   protected $except = [
    '/routename',
   ];
}

这不是最好的解决方案,但可以快速修复。寻找更好的想法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 2015-09-15
    • 2015-06-05
    • 2018-11-27
    • 2019-12-26
    • 2013-03-08
    • 2018-01-07
    相关资源
    最近更新 更多