我不是一个出色的开发人员,所以我想我遇到的问题对我来说只是大问题。
我有一个项目,其中我为当前语言提供了不同的子域。当我登录用户时,它仅记录当前子域。因此,当我在"en.Aproject.com"登录,然后转到"de.Aproject.com"时,用户将不会登录。他们不共享会话。我已经尝试在应用程序/会话中修改"域"=>空.php。但是当我在此处更改值时,登录名根本不起作用。然后每次在数据库中创建新的会话行时,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 个会话会感觉不对......对所有这些会话只使用一个会话会感觉更好。
好的,我希望您了解问题,并且有人已经遇到同样的问题并找到了解决方案。谢谢!!!!!!!!迎接。杰蒂
背景信息..我正在使用拉拉维尔 4.2
现在我只是尝试了一些东西,也许它对某人有帮助。实际上第 2 点对我来说很奇怪(见下文)
我显示这 3 件事:
会话::getId()
Auth::getName()
var_dump(会话::全部())
我将它们显示在"de.Aproject.com"上。在这里我登录了。
我将它们显示在"en.Aproject.com"上...我仍然注销的地方(我想:D修复)
- Session::getId() 的值在两端是不同的。我想这就是问题所在,他们应该有同样的共同点。
- Auth::getName() 的值在两边 (login_82e5d2c56bdd0811318f0cf078b78bfc) 上是相同的。我不明白。为什么当我没有登录时,第二个页面有这个值?
- Session::all() 的值在第一个站点上为 ["login_82e5d2c56bdd0811318f0cf078b78bfc"] => string(17) "test@test.de",在第二个站点上为空。没错。
由于默认的Laravel身份验证系统使用cookie来管理会话,因此您实际上需要在要使用的每个子域上登录用户。为避免这种情况,您可以使用另一个会话驱动程序,如数据库。