Laravel多域名会话

4
我不是一个顶尖的开发者,所以我遇到的问题可能对我来说太大了。
我的项目中有不同的子域名与当前语言相关。当我登录用户时,只能在当前的子域名下登录。因此,当我在“en.Aproject.com”登录用户,然后转到“de.Aproject.com”时,用户将无法登录。它们不共享会话。我已经尝试修改app/sessions.php中的“domain” => null。但是,当我在这里更改值时,登录根本不起作用。然后,每次都会在数据库中创建一个新的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
现在我尝试了一些东西,也许它可以帮助别人。实际上第二点对我来说很奇怪(见下文)
我显示了以下三件事:
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",而在第二个页面上为空。这是正确的。
1个回答

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接