PHP / Laravel:跨每个域的子域共享会话

时间:2016-06-07 16:03:58

标签: php laravel session laravel-5.2

我需要分享以下会话:     domain.com,     sub1.domain.com     sub2.domain.com

但他们也必须与其他域合作。 例如,如果我选择session.domain =" .domain.com" - 会话不适用于" another.com"

由于

1 个答案:

答案 0 :(得分:0)

您无法在不同的域之间共享会话,因为它们被会话Cookie域设置锁定。

**可以** 根据您可以存储在Redis(服务器端)等内容中的Cookie值检索关联数据。它需要的是一些可由另一个域客户端(通过JavaScript)读取的公共标识符(例如用户ID)。

麻烦的是将值从一个站点传递到另一个站点,甚至是另一个子域。您需要一个中央集线器来连接存储值并且是cookie域的发起者。您可以通过引用存储在第二个域上的cookie值将某些细节从一个域传递到另一个域,并根据您存储的值传回数据(例如通过ajax)。

Origin (Hub) Domain: cookie.domain.com
Subdomain 1:         subdomain1.domain.com
Subdomain 2:         subdomain2.domain.com
Different Domain:    www.differentdomain.com

Cookie Domain:     cookie.domain.com
JavaScript Domain: cookie.domain.com

这样,JavaScript可以读取存储在cookie.domain.com中的cookie,然后与当前客户端会话甚至是当前页面所源自的服务器/域进行交互。

如果你看看Facebook / Twitter如何注入他们的脚本和cookie,他们来自同一个域/子域(这就是我为以前的项目解决这个问题的方法)。

Facebook Cross Domain Login Toolkit