Сессия по своей природе - это cookie, который содержит идентификатор сессии.Он, очевидно, хранится в браузере и, следовательно, бэкэнд не имеет никакого контроля над этим cookie, кроме возможности получить / установить его.Другими словами, бэкэнд не может отловить все возможные случаи , когда cookie-файл сеанса может исчезнуть на клиенте.Например, клиент может отказаться хранить куки или удалить их вручную.
Конечно, если вы сочтете приемлемым рассматривать каждый сеанс как «сеанс, который активен, пока его время жизни не закончится с серверной точки зрения» - есть довольно простой способ достичь вашей цели:
- В конфигурации сеанса есть время жизни cookie сеанса , которое используется для расчета времени окончания сеанса, вы можете использовать его для расчета времени окончания сеанса
- В качестве альтернативы вы можете прослушатьдля события
kernel.response
и проверьте, настроен ли для сеансового куки-файла время истечения срока действия.
Если вы сохраните это время истечения в записи учетной записи пользователя - у вас будет точная информация об истечении сессии.Использование этой информации может варьироваться в зависимости от ваших потребностей.