ZF2: Почему мои сеансы выходят из системы?

Мое приложение ZF2 выходит из системы после короткого периода бездействия — скажем, 60 минут или около того — и я не могу понять, почему.

У меня есть объект ‘auth’, который является синглтоном, который составляет экземпляр Zend\Session\Container, Его конструктор создает контейнер со следующей строкой:

$this->session = new Container('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 дней соответственно. Есть ли какие-то другие настройки, на которые я должен смотреть?

Я где-то читал, что обработчик сохранения по умолчанию, ‘file’, не поддерживает параллелизм. Мой бутстрап также открывает session container в пространство имен auth с new Container('Auth'), Может ли это конфликтовать с контейнером в синглтоне аутентификации? Я сомневаюсь в этом, поскольку проблема, вероятно, возникнет в периоды высокой активности (а не после периода бездействия). Также я бы ожидал увидеть исключение.

Горе это я.

РЕДАКТИРОВАТЬ: Стоит также отметить, что идентификатор сеанса не изменяется при выходе или при повторном входе.

2

Решение

Есть много моментов, почему сессия может стать недействительной.

всегда проверяйте следующие пункты:

  • время жизни файла cookie сеанса (должно стать недействительным только при закрытии браузера)
  • сама продолжительность сеанса
  • ключ cache_expire в zf2 (должен быть больше времени жизни сессии)

Попробуйте добавить это

    //NEW SECTION
'cache_expire'         => 60 * 26, <-- this may help
'gc_maxlifetime'       => 60 * 60 * 24, <-- or this
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]