你必须使用数据库。明确地说,您必须将会话存储在数据库中。如果您的域和所有子域读取单个数据库,则用户可以从不同域访问相同的会话。
默认情况下,HTTP 客户端(浏览器)不允许跨域读取 cookie。因此,您必须在 cookie 中明确设置域信息。
Let me explain clear,
让我们假设,您有一个主域mymaindomain.com
,并且您可能有一些子域subdomain1.mymaindomain.com, subdomain2.mymaindomain.com, subdomain3.mymaindomain.com, and more
现在一个用户登录到您的主域mymaindomain.com
。并且您的应用程序设置会话 cookie 来识别用户。默认情况下,浏览器检查主机以发送带有请求的 cookie。在您的情况下,如果用户移动到 sub-domain subdomain1.mymaindomain.com
,则浏览器只需尝试创建新会话。
要强制浏览器从 发送 cookie mymaindomain.com
,您必须设置 cookie 的“域”属性。在这种情况下,显式域属性正好是mymaindomain.com
。现在假设,用户移动到subdomain1.mymaindomain.com
浏览器自动发送由mymaindomain.com
.
会发生这种情况,因为此处浏览器匹配以下子域subdomain1.
mymaindomain.com上突出显示的部分。
以便您的应用程序获得相同的会话 cookie 或用户会话,其余工作应由后端应用程序负责。同样的域限制也发生在您的后端。如果您想支持浏览器对子域的请求,您的子域应用程序应该从数据库中读取会话信息,这对于mymaindomain.com
和其他子域一样subdomain2.mymaindomain.com, subdomain3.mymaindomain.com, and more
注意:如果您的域完全更改,这将不起作用,我的意思是,如果您的托管域完全更改,浏览器将不会发送 session-cookie。