Изменение кода ядра в большинстве случаев является плохой вещью, и в вашем случае есть возможность делать то, что вам нужно, но в порядке Cake.
В app / config / core.php:измените Session.save значение
//Configure::write('Session.save', 'php');
//this will look for a 'mysession.php' file in app/config
Configure::write('Session.save', 'mysession');
В приложении / config: создайте mysession.php файл с параметрами, которые вы хотите для своей сессии
ini_set('session.use_trans_sid', 0);
ini_set('session.name', Configure::read('Session.cookie'));
ini_set('session.cookie_lifetime', $this->cookieLifeTime);
ini_set('session.cookie_path', $this->path);
//overwrite Cake setting already set by CakeSession
ini_set('session.cookie_secure', 0);
Также имейте в виду, что если вы установите свои куки-файлы как небезопасные, большинство преимуществ использования HTTPS пропадет, потому что, поскольку тот же куки-файл сеанса используется для HTTPS и HTTP, он становитсялегко украсть его, а затем украсть сеанс для HTTPS.
У меня был случай веб-приложения с административной частью через HTTPS и публичной частью через HTTP, который также требовал сессии.Мне удается разделить обе части, указав два разных имени файла cookie:
В app_controller.php:
if(env('HTTPS')
{
Configure::write('Session.save', Configure::read('Session.save') . '_https');
}
А в app / config создайте еще один файл с именем * mysession_https.php * с помощью
ini_set('session.use_trans_sid', 0);
ini_set('session.name', Configure::read('Session.cookie') . 'S');
//cookie destroyed when users close their browser
ini_set('session.cookie_lifetime', 0);
ini_set('session.cookie_path', $this->path);
ini_set('session.cookie_secure', 1);
Это создает два разных сеанса, один по HTTP и один по HTTPS, но в моем случае это было нормально, поскольку все конфиденциальные или личные данные передаются по HTTPS, а часть по HTTP требует только сеанс для полученияболее плавная навигация.