Symfony 2: Как установить время жизни сеанса при входе в систему?


У меня есть пользовательская форма входа для моего приложения Symfony 2. В этой форме у меня есть поле выбора с несколькими опциями, чтобы установить максимальное время простоя сеанса входа. Я хочу иметь возможность установить время жизни сеанса при входе в систему. К сожалению, loginaction хранится в FOSUserBundle, который не может быть изменен из-за будущих обновлений пакета.

Вот что я выяснил до сих пор, поправьте меня, если я ошибаюсь:
Во-первых, время жизни в symfony может быть уничтожено через некоторое время. время, как описано здесь .
Во-вторых, я должен быть в состоянии поймать / перехватить действие входа / проверки, чтобы установить параметр в параметре.в формате YML.
Затем этот параметр можно использовать в прослушивателе, чтобы проверить, не превышен ли maxlifetime.

Итак, мой вопрос разделен на два других вопроса:

  1. как перехватить / перехватить действие входа / проверку?
  2. Есть ли способ создать прослушиватель, который проверяет время простоя, пока ничего не происходит (или может быть проверка на следующая просьба)?

Заранее спасибо

1 2

1 ответ:

Я предполагаю,

  1. Вам нужен обработчик успешного входа в систему. Прочитайте следующее, Чтобы понять, что

    Symfony2 Login and Security

  2. Вы также можете написать EventListener для событий запроса контроллера / ядра, где вы можете сравнить время простоя пользователя.

    Http://symfony.com/doc/current/cookbook/service_container/event_listener.html#request-events-checking-types

Насколько мне известно, это не очень хорошая идея. чтобы добавить значения параметров для такого рода требований.

Если вам нужно уничтожить сеанс пользователя, почему бы не установить время входа в систему в обработчике успешности аутентификации (можно сохранить его в сеансе или последнем входе сущности пользователя), а в прослушивателе контроллера вы можете сравнить длину входа и сбросить сеанс пользователей?