同一会话,不同的域,设置会话ID

时间:2011-12-29 16:51:46

标签: php session cookies symfony1 cross-domain

我有几个域名,我想成为会话。 我创建了一个这样的方法:

用户登录在中心位置完成,会话保存在数据库中。

假设用户A想要访问abc.com域名。我的应用程序将其重定向到他登录的主身份验证域。 登录后生成一个身份验证令牌,该令牌保存在会话表的字段中,然后传回abc.com应用程序。

我使用auth_token从数据库中获取session_id并将abc.com的session_id设置为相同。

问题在于它始终会创建一个新会话。

这是我的abc.com代码

$sessionId = // get from the database using the auth_token.
 /* CLOSE PREVIOUS SESSION */
            session_destroy();

// sets the new id.  
            session_id($sessionId);

            /** start new session * */
            session_start();

我缺少什么? 我正在使用PHP与Symfony框架。不知道它是否与symfony会话处理有关。

1 个答案:

答案 0 :(得分:4)

确定。我解决了我的问题。 在调用session_destroy()之后,我不得不删除旧的会话cookie。

如果有人有兴趣,这是我的完整代码:

$sessionId =  // get session id from  the database using the auth_token
session_destroy();

$this->getResponse()->setCookie('mycookie',null,time()-3600);

session_id($sessionId);

/** start new session * */

session_start();

$this->getResponse()->setCookie('mycookie', $sessionId,null,null,'mydomain');

感谢大家的帮助。