2010-05-25 51 views
4

我的主機要求我爲SSL安全訪問(共享SSL)使用不同的域,因此我需要在兩個域之間轉換用戶會話。該頁面的一部分位於http://example.com處,而SSL'd部分位於https://example.hosting.com處。因此,我無法設置跨域Cookie。手動啓動與域之間的特定ID /轉換會話cookie的會話

我想要做的就是在過渡會話ID和重新設置這樣的餅乾:

  • ​​,用戶點擊鏈接到安全區域,並進入:
  • 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,並且此會話爲空,數據不會被恢復。

這是在CakePHP 1.2.4上。我是否需要做其他事情,還是有更好的方式去做我想做的事情?

回答

2

Configure::write('Security.level')設置爲medium或更高時,session.referer_check被隱式激活,從而導致整體失敗。將安全級別設置爲low(或使用自定義會話配置)可使所有操作都按原樣進行。

裏去了大約5個小時的調試......(-_- ;;)

0

我首先想到的是用蛋糕文件會議,並在複製該文件,然後也許嘗試和開始一個新的會話與那phposssid,雖然我甚至不知道,如果這將實際工作或不:)

+0

聽起來太麻煩了,可能比現在的系統更容易出錯。感謝您的輸入。 :) – deceze 2010-05-25 07:21:37

-1

與蛋糕2.6.1 - 這是對我有用。

$this->Session->id("tfvjv43hjmsnjkh0v3ss539uq7"); // add session id you want to set 
    $this->Session->id(); 
    $this->Session->read("key"); // hhoorray worked :) 

與SessionComponent id()函數需要被調用兩次session id來設置session_id();並第二次開始蛋糕會議。 第一個電話並不真正開始會議...我不知道蛋糕的人怎麼會錯過它.....

Upvote如果這對你有用。

+0

至少...有禮貌評論你爲什麼downvote一個答案的原因? – 2015-03-28 11:02:07