如何一次登录不同域中的多个应用程序?

时间:2011-01-27 06:43:47

标签: php codeigniter cookies multiple-domains

例如,我有2个应用,一个位于abc.com,另一个位于xyz.com

现在我想要做的是,如果一个用户登录abc.com,那么他也将自动登录xyz.com。表示登录abc.com后,只需在浏览器的新标签页中打开xyz.com,就会显示他已登录。

msn.comhotmail.com相同,如果您已登录msn.com并打开hotmail.com,则可以看到您已登录。

我正在使用 CI ,对于登录信息,我使用了CI的会话功能(实际上是 cookie ),但似乎无法通过不同的域共享Cookie。

我尝试使用CURL,但CURL无法让xyz.com 真正制作Cookie。

我也在谷歌周围搜索,很多人建议传递会话ID,但问题是,abc.comxyz.com之间没有链接,我怎么能通过会话?如果我将会话ID存储在数据库中,那么如何识别哪个用户应该使用此会话ID?显然,IP并不安全:D

拜托,帮助我!

2 个答案:

答案 0 :(得分:2)

您可以在xyz.com上打开一个连接到abc.com的iframe,然后使用ajax / js通过从iframe调用js函数从iframe转发某种令牌到xyz.com。

所以它看起来像:

XYZ.com:

function authAbcUser(token) { 
    //During this function you will set a cookie for this user on XYZ.com
}
<iframe height="0" width="0" src="http://www.abc.com/auth.php?token"></iframe>

ABC.com/auth.php:

parent.authAbcUser(token);

答案 1 :(得分:0)