есть событие в Symfony 4, когда истекает время сеанса пользователя? - PullRequest
0 голосов
/ 16 февраля 2019

Я создаю веб-приложение с Symfony 4.2.В настоящее время я пытаюсь сохранить дату выхода пользователя из системы в базе данных, чтобы показать ему / ей новое содержимое с момента последнего выхода из системы.Я сделал это, когда пользователь намеренно нажимает на выход из системы, но я не знаю, как добиться того же, когда истекает срок его сеанса.Я пытался найти событие Session expires в официальной документации Symfony.Самым близким, что я мог найти, был следующий документ:

https://symfony.com/doc/current/components/http_foundation/session_configuration.html

Но я не понимаю, помогло ли мне это и как.Можно ли выполнить функцию по истечении сеанса пользователя в Symfony 4?

1 Ответ

0 голосов
/ 16 февраля 2019

Сессия по своей природе - это cookie, который содержит идентификатор сессии.Он, очевидно, хранится в браузере и, следовательно, бэкэнд не имеет никакого контроля над этим cookie, кроме возможности получить / установить его.Другими словами, бэкэнд не может отловить все возможные случаи , когда cookie-файл сеанса может исчезнуть на клиенте.Например, клиент может отказаться хранить куки или удалить их вручную.

Конечно, если вы сочтете приемлемым рассматривать каждый сеанс как «сеанс, который активен, пока его время жизни не закончится с серверной точки зрения» - есть довольно простой способ достичь вашей цели:

  1. В конфигурации сеанса есть время жизни cookie сеанса , которое используется для расчета времени окончания сеанса, вы можете использовать его для расчета времени окончания сеанса
  2. В качестве альтернативы вы можете прослушатьдля события kernel.response и проверьте, настроен ли для сеансового куки-файла время истечения срока действия.

Если вы сохраните это время истечения в записи учетной записи пользователя - у вас будет точная информация об истечении сессии.Использование этой информации может варьироваться в зависимости от ваших потребностей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...