在不同的域中记录用户

时间:2010-10-14 13:20:33

标签: php authentication cookies cross-domain

两年前,我不得不设计一个系统来跨多个域共享身份验证数据,所有这些域共享相同的服务器/数据库。我能够通过一个复杂的cookie共享系统来解决这个问题,到目前为止仍然有效。

我现在正在重新设计系统,我想知道是否有更好的方法来实现这一点,而无需编写跨域cookie。

基本上系统必须这样做。

登录一个站点后,用户必须无缝登录所有其他站点,不仅要跟踪链接,还要直接在地址栏上写下域名。

据我所知,实现这一目标的唯一方法是跨域cookie,如果有其他选择请告诉我。

非常感谢

3 个答案:

答案 0 :(得分:1)

我的想法是包含来自第三个域的登录-Javascript,该域在所有站点中都包含includet。这个javascript设置并读取session-cookie并通过ajax调用当前域服务器的结果。 (不应该在JS中进行验证 - 这只是设置和读取cookie)

如果跨域AJAX不起作用,您仍然可以调用充当代理的第三个域服务器并调用当前域服务器。

答案 1 :(得分:1)

StackOverflow网站实现了类似的功能。请查看以下链接中的详细信息。

Here is a post giving an outline of how they did it.

And here is even more detail.

答案 2 :(得分:0)

为此,您必须使用cookie,但您可以改变您在cookie中存储的内容。 Cookie不必包含用户凭据,而是可以包含更多用于“集中”会话的令牌。

简单方法是让所有主机共享一个memcached服务器,并使用用户cookie的内容作为密钥。