Laravel多域会话

时间:2015-01-21 15:27:30

标签: session authentication laravel cross-domain subdomain

我不是一个出色的开发者,所以我想我遇到的问题对我来说很重要。

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

当前域以某种方式保存在会话标识符中吗?是否可以为不同的域使用一个会话?我找到了一些关于OAuth和单点登录的内容,但我不能自己处理它。

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

mainproject.com

en.mainproject.com

de.mainproject.com

...

Aproject.com

en.Aproject.com

de.Aproject.com

...

Bproject.com

en.Bproject.com

de.Bproject.com

...

因此,登录用户喜欢20个不同的页面并创建20个会话会感觉不对...只为所有会话使用一个会话会感觉更好。

好的,我希望你能理解这个问题,并且有人已经遇到了同样的问题并找到了解决方案。谢谢!!!!!!!!映入眼帘。 gerti


背景信息..我使用的是Laravel 4.2

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

我展示了这三件事:

会话::的getId()

Auth :: getName()

的var_dump(会话::所有())

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

我在“en.Aproject.com”上显示它们......我还在哪里登出(我想解决的问题:D)

  1. Session :: getId()的值在双方都不同。这就是我猜的问题,他们应该分享同样的问题。
  2. Auth :: getName()的值在两边都是相同的(login_82e5d2c56bdd0811318f0cf078b78bfc)。哪个我不明白。当我未登录时,为什么第二页有此值?
  3. Session :: all()的值是[“login_82e5d2c56bdd0811318f0cf078b78bfc”] =>字符串(17)第一个网站上的“test@test.de”,第二个网站是空的。多数民众赞成正确。

1 个答案:

答案 0 :(得分:0)

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