CakePHP проводит сеанс от основного домена до субдомена

Я работаю с Cakephp, и у меня есть проблема, поддерживающая сеанс по субдоменам. Моя проблема такова:

  • Вход для пользователей в 'localhost/login'
  • Если они аутентифицированы, они перенаправляются на "customer.localhost/home".

В настоящее время Cake создает файл cookie для каждого домена, то есть localhost и customer.localhost. Это означает, что я не могу сохранить сеанс работы для пользователя. Есть ли способ сделать весь домен cookie закрепленным в родительском домене с целью сохранения сеанса, работающего по субдоменам?

Я попытался ввести это в свой bootstrap, но это не имеет никакого эффекта: ini_set ('session.cookie_domain', '.localhost');

Если вы думаете, что этого не может быть сделано, не стесняйтесь сообщать мне, чтобы я мог перейти от этой неприятной проблемы.

Большое спасибо,

kSeudo

Ответ 1

Sessions:

Чтобы сделать cookie сессии действительным для всех ваших поддоменов и домена верхнего уровня, вам действительно нужно установить его самостоятельно в файле APP/config/bootstrap.php:

ini_set('session.cookie_domain', '.domain.com');

Затем в вашем файле APP/config/core.php установите Security на низкое:

Configure::write('Security.level', 'low');

", иначе параметр referer_check будет установлен на текущий HTTP_HOST в Объектная строка объекта CakeSession 441."



Cookies

В на этой странице в нем объясняется, что вы можете использовать переменную "domain":

Доменное имя разрешает доступ к файлу cookie. например Использовать '.yourdomain.com, чтобы разрешить доступ со всех ваших поддоменов.

В соответствии с их примером кода:

<?php
public $components = array('Cookie');
public function beforeFilter() {
    parent::beforeFilter();
    $this->Cookie->name = 'baker_id';
    $this->Cookie->time =  3600;  // or '1 hour'
    $this->Cookie->path = '/bakers/preferences/';
    $this->Cookie->domain = 'example.com';
    $this->Cookie->secure = true;  // i.e. only sent if using secure HTTPS
    $this->Cookie->key = 'qSI232qs*&sXOw!';
    $this->Cookie->httpOnly = true;
}

Ответ 2

В приложении /Config/core.php есть конфиг, чтобы изменить домен cookie домена:

Configure::write('Session', array(
    'defaults' => 'php',
    'ini' => array(
        'cookie_domain' => '.example.com'
    )
));