Я пытаюсь установить максимальное время жизни сессии с помощью \Zend\Session\Container
. Чтобы проверить это, я положил его на 1 сек.
Теперь я посмотрел документы
Так я и сделал
$config = new StandardConfig(); $config->setOptions(array( 'remember_me_seconds' => 1, )); $manager = new SessionManager($config); $session = new Container('user', $manager);
Но успеха нет. Затем я начал поиск в Google и нашел этот ответ
Поэтому я сделал конфигурацию
return array( 'session' => array( 'remember_me_seconds' => 2419200, 'use_cookies' => true, 'cookie_httponly' => true, ), );
(конфигурация работала и загружалась в диспетчер), но опять не удалась
Поэтому я продолжил поиск и нашел этот ответ
Но опять же никакого успеха.
Поэтому после всех поисков я не мог заставить его работать, поэтому теперь я надеюсь, что кто-то еще заработает и сможет мне помочь.
Ну, я наконец выяснил, в чем проблема.
Проблема заключалась в том, что я использовал
$sessionConfig = new SessionConfig(); $sessionConfig->setOptions(array( 'use_cookies' => true, 'cookie_httponly' => true, 'gc_maxlifetime' => $config['authTimeout'], )); $manager = new SessionManager($sessionConfig);
Это «сработало», единственная проблема заключалась в том, что был установлен файл cookie с session
продолжительности жизни. Это разные вещи в браузерах. Т.е. в хром он уничтожается, если вы закроете вкладку, поэтому независимо от того, насколько высока gc_maxlifetime
она не будет работать.
Таким образом, легкое исправление будет следующим:
$sessionConfig = new SessionConfig(); $sessionConfig->setOptions(array( 'use_cookies' => true, 'cookie_httponly' => true, 'gc_maxlifetime' => $config['authTimeout'], 'cookie_lifetime' => $config['authTimeout'], )); $manager = new SessionManager($sessionConfig);
Надеюсь, это поможет кому-то в будущем
$config['authTimeout']
– положительное целочисленное значение
$config = new StandardConfig(); $config->setOptions(array( 'cookie_lifetime' => '2419200', 'gc_maxlifetime' => '2419200' ));
Измените значение 2419200
на сколько секунд вы действительно хотите.
В приложении global.php или вы можете сделать это в конфигурации модуля:
'session_config' => array( 'name' => 'your session name', 'remember_me_seconds' => 60 * 60 * 24 * 30*3, 'use_cookies' => true, 'cookie_httponly' => true, ),
проверьте Zend \ Session \ Service \ SessionConfig.