Session 使用特定id手动启动会话/在域之间转换会话cookie

Session 使用特定id手动启动会话/在域之间转换会话cookie,session,cakephp,cookies,Session,Cakephp,Cookies,我的主机要求我使用不同的域进行SSL安全访问(共享SSL),因此我需要在两个域之间转换用户会话。页面的一部分位于http://example.com,而SSL部分位于https://example.hosting.com。因此,我无法设置域扩展cookie 我试图做的是转换会话id,并重新设置cookie,如下所示: http://example.com/normal/page,用户单击指向安全区域的链接并转到: http://example.com/secure/page,这会导致重定向到:

我的主机要求我使用不同的域进行SSL安全访问(共享SSL),因此我需要在两个域之间转换用户会话。页面的一部分位于
http://example.com
,而SSL部分位于
https://example.hosting.com
。因此,我无法设置域扩展cookie

我试图做的是转换会话id,并重新设置cookie,如下所示:

  • http://example.com/normal/page
    ,用户单击指向安全区域的链接并转到:
  • http://example.com/secure/page
    ,这会导致重定向到:
  • https://example.hosting.com/secure/page?sess=ikub...
    ,它将恢复会话并为域设置有效的新cookie,然后重定向到:
  • https://example.hosting.com/secure/page
这会一直持续到会话应该重新开始的时候。我正在做:

function beforeFilter() {
    ...
    $this->Session->id($_GET['sess']);
    $this->Session->activate();
    ...
}
据我所知,它应该用给定的ID启动会话。它实际上生成了一个新的会话ID,但是该会话是空的,数据没有还原


这是在CakePHP1.2.4上实现的。我是否需要做其他事情,或者是否有更好的方法来做我正在尝试做的事情?

Configure::write('Security.level')
设置为
medium
或更高时,
会话。referer\u check
被隐式激活,这会导致整个操作失败。将安全级别设置为
low
(或使用自定义会话配置)可以使一切正常工作


进行了大约5个小时的调试。。。(-)

我的第一个想法是使用Cake文件会话并复制文件,然后可能尝试使用该phpsID启动一个新会话,尽管我甚至不确定这是否真的有效:)

使用Cake 2.6.1——这对我来说是有效的

    $this->Session->id("tfvjv43hjmsnjkh0v3ss539uq7"); // add session id you want to set
    $this->Session->id();
    $this->Session->read("key"); // hhoorray worked :)
with SessionComponent id()函数需要调用两次,一次使用会话id来设置会话id();第二次开始蛋糕课程。 第一次呼叫不会真正启动会话。。。我不知道蛋糕店的伙计们怎么会错过


如果这对您有效,请向上投票。

听起来太麻烦了,可能比当前系统更容易出错。谢谢你的意见。:)至少有礼貌地评论一下你否决答案的原因??