0

我运行一个有许多不同子域的网站。我们正在引入一个新的下载服务器,它使用主域的子域。我们通常检查用户信息的方式是使用跨子域 cookie 等,但我知道这不会起作用,因为它们来自不同的服务器,我想知道检查用户是否在主服务器上登录等的最佳方法是什么。

我想要做的是以下

Sub1.domain.tld = 主服务器

当您要下载文件时,它会将您指向存储文件的适当服务器

Sub2.domain.tld = 下载服务器

请问有什么方法可以保留或检查用户是否已登录。

我们通常使用跨子域的 cookie 的方式是

setcookie('LoginVariable1', $LoginVariable1, $expiretime, '/', '.domain.tld');
setcookie('LoginVariable2', $LoginVariable2, $expiretime, '/', '.domain.tld');
4

2 回答 2

0

如果子域映射到不同的服务器,我认为您有两种方法。

1)您可以在服务器 A 上共享 php 将会话写入的目录,并将服务器 B 指向那里。

2)您可以使用数据库会话并让两台服务器连接到单个数据库来验证/检索会话。

在这两种情况下,您最终都会得到一个单一的中心位置来存储会话。

于 2013-04-03T22:35:44.380 回答
0

跨域 cookie 将完全适用于您的情况。它们不起作用的唯一情况是如果您有“www.somedomain.example”和“download.someotherdomain.example”,因为您不能将 cookie 定义为顶级域“example”的跨域。

所以这归结为有一个 cookie 告诉所有服务器用户的会话 id 或他在登录期间获得的身份验证令牌等信息,然后所有服务器必须询问某个中央身份验证服务此会话或令牌当前是否已登录。

于 2013-04-03T22:35:18.747 回答