Мое приложение ZF2 выходит из системы после короткого периода бездействия - скажем, 60 минут или около того - и я не могу понять, почему.
У меня есть объект 'auth', который представляет собой синглтон, который составляет экземпляр Zend\Session\Container
. Его конструктор создает контейнер со следующей строкой:
$this->session = new Container('Auth');
Объект auth имеет метод login()
, который сохраняет текущего пользователя со следующей строкой:
$this->getSession()->userId = $user->id;
Объект auth также имеет метод isLoggedIn()
, который проверяет статус следующим образом:
if ($this->getSession()->userId) {
return true;
}
return false;
Это все довольно просто. Тем не менее, время от времени, когда бутстрап проверяет, вошли ли мы в систему, он возвращает false. Почему?
Вот распечатка конфига из менеджера сессий:
'cookie_domain' => '',
'cookie_httponly' => false,
'cookie_lifetime' => 604800,
'cookie_path' => '/',
'cookie_secure' => '',
'name' => 'MyApplication',
'remember_me_seconds' => 1209600,
'save_path' => '/var/lib/php5',
'use_cookies' => true,
Как видите, remember_me_seconds
и cookie_lifetime
установлены на 2 недели и 7 дней соответственно. Есть ли какие-то другие настройки, на которые я должен смотреть?
Я где-то читал, что обработчик сохранения по умолчанию, «файл», не поддерживает параллелизм. Мой бутстрап также открывает session container
для пространства имен auth с new Container('Auth')
. Может ли это конфликтовать с контейнером в синглтоне аутентификации? Я сомневаюсь в этом, поскольку тогда проблема, скорее всего, возникнет в периоды высокой активности (а не после периода бездействия). Кроме того, я ожидал увидеть исключение.
Горе мне.
РЕДАКТИРОВАТЬ: Также стоит отметить, что идентификатор сеанса не меняется при выходе из системы или при повторном входе в систему.