Сесията изтича твърде скоро с CakePHP 2.0

Наскоро преминах към Cake2.0 и имах проблеми със сесиите, които изтичаха много по-рано, отколкото би трябвало.

Копиране на примера от документацията, зададох типа на сесията на php и зададох времето за изчакване на 3 дни (4320 минути). Въпреки това, след като прочетох различни статии, изглежда, че дори след задаване на таймаут на 3 дни в Cake, PHP може да унищожи сесията в GC, ако PHP.ini е зададен с по-кратък таймаут за сесията или GC.

И така, промених сесията по подразбиране на торта със същото време за изчакване.

Configure::write('Session', array(
   'defaults' => 'cake',
   'timeout' => 4320,
));

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

Въпреки това, въпреки че това би трябвало да ме остави в системата за 3 дни, установявам, че едва ми стигат 3 часа, преди да трябва да вляза отново.

Има ли проблем с изчакването на сесията, за който трябва да знам, или изчакването е в секунди (не минути?) или се влияе от Security.level като в 1.3? Не успях да намеря никаква твърда документация за това как това работи във 2.0 или какво може да причинява проблемите.

Благодаря предварително.

Отговор: За всеки, който дойде по-късно и види това. Има грешка в 2.0.5, при която времето за изчакване на сесията не запазваше стойността в Config.write();

За да решите, актуализирайте до 2.0.6 (или 2.1, когато напусне бета)


person harisenbon    schedule 14.02.2012    source източник
comment
Добре е да знам! Благодаря, че актуализирахте въпроса си с решението.   -  person Chuck Burgess    schedule 16.02.2012
comment
Странно, все още получавам този бъг във 2.0.6...   -  person Ben Brocka    schedule 26.03.2012


Отговори (1)


Ако използвате защитния компонент, винаги можете да опитате да промените изтичането и на тях на 3 часа:

$components = array(
    'Security' => array(
        'csrfExpires' => '+3 hour'
    )
);

Не казвам, че това е добра идея, но може да ви помогне да стесните проблема. Ако използвате компонента за защита, вероятно това е проблемът.

Освен това Session.timeout е в минути (не секунди).

person Chuck Burgess    schedule 15.02.2012