【问题标题】:Laravel Multi Domain SessionLaravel 多域会话
【发布时间】:2015-03-20 04:28:58
【问题描述】:

我不是一个出色的开发人员,所以我想我遇到的问题对我来说太大了。

我有一个项目,其中我有当前语言的不同子域。当我登录用户时,它仅记录当前子域。因此,当我登录“en.Aproject.com”,然后转到“de.Aproject.com”时,用户将不会登录。他们不共享会话。我已经尝试在 app/sessions.php 中修改 'domain' => null。但是当我在这里更改值时,登录根本不起作用。然后每次在数据库中创建一个新的 Session-row 时,Laravel 似乎都无法识别它们。

当前域是否以某种方式保存在会话标识符中?是否可以将一个会话用于不同的域?我找到了一些关于 OAuth 和单点登录的东西,但我自己无法处理。

我正在考虑(在登录并且凭据正确时)通过 Ajax 调用脚本,该脚本应该为所有需要的域登录用户。但是我必须为注销做同样的事情。而且我可能会有很多域。该项目将有一个基本页面和几个子项目(都使用不同的语言)。像这样

mainproject.com

zh.mainproject.com

de.mainproject.com

...

Aproject.com

zh.Aproject.com

de.Aproject.com

...

Bproject.com

zh.Bproject.com

de.Bproject.com

...

因此,让用户登录来点赞 20 个不同的页面并创建 20 个会话会感觉不对...最好只为所有这些页面使用一个会话。

好的,我希望您了解问题,并且有人已经遇到过同样的问题并找到了解决方案。谢谢!!!!!!!!打招呼。格蒂


背景信息.. 我正在使用 Laravel 4.2

现在我只是尝试了一些东西,也许它可以帮助某人。实际上第 2 点对我来说很奇怪(见下文)

我展示了这三件事:

Session::getId()

Auth::getName()

var_dump(Session::all())

我在“de.Aproject.com”上展示它们。我在这里登录。

我将它们显示在“en.Aproject.com”上...我仍然注销的地方(我想修复它:D)

  1. Session::getId() 的值两边不同。这就是我猜的问题,他们应该共享相同的。
  2. Auth::getName() 的值在两边相同(login_82e5d2c56bdd0811318f0cf078b78bfc)。我不明白。为什么我未登录时第二页有这个值?
  3. Session::all() 的值在第一个站点上是 ["login_82e5d2c56bdd0811318f0cf078b78bfc"] => string(17) "test@test.de",在第二个站点上是空的。没错。

【问题讨论】:

    标签: session authentication laravel cross-domain subdomain


    【解决方案1】:

    由于默认的 Laravel 身份验证系统使用 cookie 来管理会话,因此您实际上需要在您要使用的每个子域上登录用户。为避免这种情况,您可以使用其他会话驱动程序,例如数据库。

    【讨论】:

      猜你喜欢
      • 2014-08-05
      • 2014-10-19
      • 2019-10-13
      • 2014-09-25
      • 1970-01-01
      • 2015-01-05
      • 2019-12-16
      • 2015-04-26
      • 2020-08-04
      相关资源
      最近更新 更多