Проблема в поддержании сессии между двумя различными доменами на веб-сайте, сделанном в CakePHP

Пользуйтесь обрабатывающей терминал библиотекой как модуль проклятий :

модуль проклятий предоставляет интерфейс библиотеке проклятий, фактическому стандарту для портативной усовершенствованной терминальной обработки.

6
задан Jon Seigel 5 December 2010 в 16:14
поделиться

3 ответа

Я не совсем понимаю, но я попробую. Я думаю, что речь идет о настройке PHP под названием session.cookie_domain .

Предполагается, что ваши веб-сайты имеют следующие URL-адреса:

Требуемый параметр: .example.org .

Вы можете настроить это в php.ini , файл .htaccess или даже в самом PHP:

<?php ini_set('session.cookie_domain', '.example.org'); ?>

Если ваши веб-сайты работают на двух совершенно разных доменах, например:

... тогда нет возможности поделиться файлом cookie между этими двумя разными доменами.

3
ответ дан 16 December 2019 в 21:44
поделиться

Если у вас два разных домена, я бы предложил следующее:

На «www.mainDomain.com» поместите ссылку на «www.fr. subDomain.com "и передайте cookie в свой файл просмотра:

$session_cookie = $_COOKIE[Configure::read('Session.cookie')];
echo $html->link('See French Site', 'http://www.fr.subDomain.com/?session_key='.$session_cookie);

Затем на французском сайте добавьте немного кода, имитирующего cookie в app_controller.php> beforeFilter ().

function beforeFilter() {
    if(!empty($this->params['url']['session_key']) {
        // Setup variables here...
        setcookie(Configure::read('Session.cookie'), $session_cookie, time()+360000, '/', $domain);
        // You could use CAKE's setcookie command here.
    }
}

Теперь, когда cookie совпадают , вам придется либо использовать сеансы базы данных, либо сеансы на основе файла пирога. Прочтите инструкции в core.php, чтобы их настроить.

Это должно позволить вам использовать один и тот же сеанс на разных сайтах. Я' m фактически в процессе реализации ACL для нескольких сайтов с одним логином. Это может быть немного сложно, но просто делайте это шаг за шагом, у вас все будет хорошо. Также не бойтесь сразу перейти к коду ядра Cake, чтобы увидеть, как он работает.

2
ответ дан 16 December 2019 в 21:44
поделиться

@dooltaz Это отличное решение. Проблема в том, что торт, кажется, ставит печенье после меня. Вместо этого я отправил пользователю метод перенаправления, а затем переместил настройку cookie в afterFilter

    function afterFilter() {
    if (!empty($this->params['url']['session_key'])) {
        // Setup variables here...
        setcookie(Configure::read('Session.cookie'), $this->params['url']['session_key'], time()+360000, '/');
        // Cakes cookie method will put your cookie name in [] so it does not work.
    }
}

(Также исправлена ​​опечатка в вашем коде ..)

3
ответ дан 16 December 2019 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: