Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多个应用程序,一个数据库。如何为用户进行跨会话?_Php_Symfony_Session_Cross Domain - Fatal编程技术网

Php 多个应用程序,一个数据库。如何为用户进行跨会话?

Php 多个应用程序,一个数据库。如何为用户进行跨会话?,php,symfony,session,cross-domain,Php,Symfony,Session,Cross Domain,我有两个Symfony应用程序。它们指向同一数据库以共享一些表。 因此,一个用户可以使用相同的用户名和密码登录到app1和app2。但由于应用程序已登录,会话被阻止。我用的是FosUserBundle 我的问题是,如何将会话共享给不同的应用程序 我试图在两个应用程序的config.yml中添加这一行: framwork: session: cookie_domain: .my-domain.com name: SFSESSID 实际上,app1在app1.my-domain

我有两个Symfony应用程序。它们指向同一数据库以共享一些表。 因此,一个用户可以使用相同的用户名和密码登录到app1和app2。但由于应用程序已登录,会话被阻止。我用的是FosUserBundle

我的问题是,如何将会话共享给不同的应用程序

我试图在两个应用程序的config.yml中添加这一行:

framwork:
  session:
    cookie_domain: .my-domain.com
    name: SFSESSID
实际上,app1在app1.my-domain.com上可用,app2在app2.my-domain.com上可用

第二个可能的答案是监听登录事件,并在我查看第二个应用程序的会话时执行登录。对吧?


谢谢。

不幸的是,它无法以这种方式工作,因为用户只能在其中一个域上使用cookie。您可以创建一个API来共享有关用户登录并识别其身份的信息,但正确的方法是创建第三个应用程序-单点登录,它仅用于登录和授权用户。您当前的两个应用程序将始终使用SSO对用户进行授权和身份验证

要实现这一点,您可以将其用作服务器和客户端

或者,如果您想快速但混乱地完成此操作,您可以创建一个JS脚本,它将调用第二个页面并在那里创建自己的cookie。但如果有人问你,我不会推荐你的


Piotr

我理解,但在这个网站上,他们解释了如何进行跨子域的会话。这不是一个好的解决方案?