Почему я не могу настроить продолжительность моих файлов cookie с помощью cakePHP? - PullRequest
0 голосов
/ 14 октября 2010

Итак, я пробовал много разных вещей, но все равно всегда получаю Cookies, у которых длительность установлена ​​на «Сеанс», если смотреть с помощью Инструментов разработчика в Google Chrome. Вот мои текущие настройки:

core.php:

Configure::write('Session.cookie', 'session');
Configure::write('Session.timeout', '3600');
Configure::write('Session.start', true);
Configure::write('Security.level', 'high');

users_controller.php

$this->Cookie->write('xHi1PeWmAw', $user_record['User']['id']);

Я попытался изменить Security.level, Session.timeout, используя $ this-> Cookie-> time = 3600; и объединяя все это, но я не могу изменить эту продолжительность. Кроме того, я попытался с короткими и длинными периодами, учитывая, что в идеале я хотел бы, чтобы этот файл cookie длился как можно дольше Подскажите, пожалуйста, что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 19 октября 2010

Если вы используете куки в качестве сеанса, тогда его время установлено равным 0. Это означает, что он истекает, когда браузер закрывается.Вы можете попытаться изменить этот номер в контроллере, как показано в коде ниже.Посмотрите, если это имеет значение.Я не проверял это, но оно того стоит.

var $components = array('Cookie');
function beforeFilter() {
   $this->Cookie->name = 'baker_id';
   $this->Cookie->time = 3600; // or '1 hour' //IF 0 THIS IS A SESSION COOKIE
   $this->Cookie->domain = 'example.com';
   $this->Cookie->secure = true; //i.e. only sent if using secure HTTPS
   $this->Cookie->key = 'qSI232qs*&sXOw!';
}
0 голосов
/ 09 мая 2011

У меня была такая же проблема (CakePHP 1.3.7), и теперь она работает, только если я поместил продолжительность в метод write ():

$this->Cookie->write ("cookie_name", "Some value", true, "+1 months");
0 голосов
/ 19 октября 2010

Хотя я не могу гарантировать, что это решит вашу проблему, я могу объяснить, как правильно настроить сеансы.

Сначала вы установите переменную Security.timeout. Это представляет значение времени ожидания в секундах, но это не равно времени истечения ваших сеансов. Это число умножается на постоянное значение в зависимости от настройки вашей переменной Security.level.

'высокий' = х 10, «средний» = х 100, «низкий» = х 300,

Это то, что дает вам время истечения. Например, если у вас Session.timeout 30, а Security.level минимума, ваши сеансы истекают через 30 * 300 секунд или 150 минут.

...