【问题标题】:How to prevent share session over subdomains in laravel?如何防止在 laravel 中的子域共享会话?
【发布时间】:2020-01-29 08:10:26
【问题描述】:

您好,我有一个基于子域的多租户应用程序。每个客户端都有自己的子域和数据库。

我根据子域设置数据库名称并通过中间件连接。

我使用文件作为会话驱动程序。我发现如果用户登录 sub1.domain.com,那么用户将 laravel_session 值复制到sub2.mydomain.com。如果数据库中有相同ID的用户,则站点允许用户进入。

如何防止这种情况发生?

使用数据库驱动程序是一种解决方案,但我不想使用它。

【问题讨论】:

  • 这里有什么问题?到目前为止你做了什么?
  • 你是使用自己的验证码还是 laravel 内置的验证码? 我根据子域设置数据库名称并通过中间件连接。中间件是做什么的?它确实闻起来像应用程序特定的问题..
  • 我使用 laravel 内置的,每个子域使用相同的会话存储文件夹(一个应用程序)。如果我将 cookie 从 sub1.mydomain.com 复制到 sub2.mydomain.com ,我可以登录到 sub2.mydomain.com 如果 sub2 数据库中有相同 ID 的用户。对不起我的英语
  • @PanelMaker,它的应用程序特定,我们不能轻易复制您的问题。如果您没有帮助我们重新创建问题或检查代码,我们将无法完全帮助您。最好的办法是将会话存储在数据库中,因为每个租户已经拥有自己的数据库。也许你可以尝试一个合适的多租户库,例如Tenancy

标签: php laravel authentication session


【解决方案1】:

您可能希望将session.php 中的域值指定为环境变量,因此对于您的一个客户,您的.env

SESSION_DOMAIN=sub2.mydomain.com

【讨论】:

  • 我使用一个应用程序文件夹,所以只有一个 .env 文件。子域共享相同的会话存储文件夹,这是导致问题的原因。
  • 你的意思是你有一个应用程序用于多个客户端,有多个用户?
  • 是的,我有一个应用程序,由子域分隔,每个子域连接自己的数据库。就像我说他们共享相同的会话存储文件夹,所以如果我将 cookie 从 sub1 复制到 sub2 它会让我进入。
猜你喜欢
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 2021-01-25
  • 1970-01-01
相关资源
最近更新 更多