Symfony добавить логи c к маршруту выхода - PullRequest
0 голосов
/ 28 марта 2020

В приложении Symfony 5.0 я хочу добавить пользовательский лог c для очистки при выходе пользователя из системы. В настоящее время у меня есть то, что описано в документации:

https://symfony.com/doc/current/security.html#logging -out

Поскольку функция logout () в SecurityController перехватывается Symfony добавление logi c туда не поможет.

Итак, где я могу добавить logi c, который всегда выполняется при выходе пользователя из системы? Пока что ничего не могу найти в документации ...

1 Ответ

1 голос
/ 28 марта 2020

ИМХО, лучший вариант - реализовать LogoutHandlerInterface, на который косвенно ссылаются на symfony документы , о которых вы упомянули (упоминается LogoutSuccessHandlerInterface, в котором есть комментарий относительно LogoutHandlerInterface: «Если вы хотите выполнить только какую-либо задачу очистки, связанную с выходом из системы, используйте взамен LogoutHandlerInterface.»)

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

Тем не менее, аргументы, предоставленные вашему LogoutHandler, получат TokenInterface с TokenInterface::getUser(), который возвращает текущего пользователя. (внедрение зависимости в конструктор должно предоставить вам дополнительные сервисы и прочее)

Альтернативой может быть реализация EventListener для события запроса ядра , которое LogoutListener из symfony/security Пакет использует для управления выходом из системы. Вы должны добавить тот же лог c, что и LogoutListener и, вероятно, заставить его срабатывать до LogoutListener, однако это немного более запутанный способ, и я действительно использовал бы LogoutHandler.

...