Вручную запустить сеанс с определенным идентификатором / файл cookie сеанса перехода между доменами - PullRequest
4 голосов
/ 25 мая 2010

Мой хост требует, чтобы я использовал другой домен для безопасного доступа SSL (общий SSL), поэтому мне нужно перенести сеанс пользователя между двумя доменами. Одна часть страницы находится на http://example.com, а часть SSL на https://example.hosting.com. Поэтому я не могу установить файл cookie, охватывающий домен.

То, что я пытаюсь сделать, - это перенести идентификатор сеанса и заново установить cookie следующим образом:

Это работает до момента, когда сессия должна быть воскрешена. Я делаю:

function beforeFilter() {
    ...
    $this->Session->id($_GET['sess']);
    $this->Session->activate();
    ...
}

Насколько я могу сказать, должен начать сеанс с заданным идентификатором. Он фактически генерирует новый идентификатор сеанса, хотя этот сеанс пуст, данные не восстанавливаются.

Это на CakePHP 1.2.4. Нужно ли делать что-то еще, или есть лучший способ сделать то, что я пытаюсь сделать?

Ответы [ 3 ]

2 голосов
/ 25 мая 2010

Когда Configure::write('Security.level') установлен на medium или выше, session.referer_check неявно активируется, что приводит к сбою. Установка уровня безопасности на low (или использование пользовательской конфигурации сеанса) заставляет все работать как надо.

Прошло около 5 часов отладки ... (-_- ;;)

0 голосов
/ 22 января 2015

С Cake 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 (); и второй раз начать сеанс торта. Первый звонок на самом деле не запускает сессию ... Я не знаю, как Cake Guys его пропустили .....

Upvote, если это работает для вас.

0 голосов
/ 25 мая 2010

Моя первая мысль - использовать сеансы файла Cake и скопировать файл, а затем, возможно, попробовать начать новый сеанс с этим phpsessid, хотя я даже не уверен, сработает ли это на самом деле:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...