多个域和一个与Symfony的共享会话

时间:2018-03-11 14:37:05

标签: php symfony session cookies cross-domain

需要:使用一个应用程序进行多域会话。

我至少有两个域名:

  • mydomain.com
  • another-domain.net

全部由同一个Symfony应用程序覆盖(我在写这篇文章的时候使用的是3.4)。

我需要的是一种在任何这些网站上通过/login路径和Guard身份验证器后面的通用表单登录进行身份验证的方法。

首先,这里有一个我正在使用的代码的要点:https://gist.github.com/Pierstoval/ca0e9845cfa1118e3d22ea14eb7c8929

情景:

  1. 当我通过添加到此Gist的Guard身份验证器进行身份验证时,我认为用户在其他网站上进行身份验证,因此我在会话中设置了connect变量。
  2. 在模板中,如果会话中有connect var,我会在模板中添加这种代码:

    window._CONNECT_PATHS = [
        "//mydomain.com/{{ path('connect', {'id': app.session.id}) }}",
        "//another-domain.net/{{ path('connect', {'id': app.session.id}) }}"
    ];
    
  3. _CONNECT_PATHS var由一个JS脚本捕获,该脚本只使用AJAX进行POST //mydomain(...) HTTP调用。
  4. 此AJAX调用由添加到此Gist的EventSubscriber类捕获,“should”确保会话已共享。
  5. 可以吗?它似乎有效,但有时当我在一个网站上进行身份验证时,我必须重新对其他网站进行身份验证。我无法弄清楚它什么时候发生,什么时候不发生。

    有什么想法吗?

0 个答案:

没有答案