ИМХО, лучший вариант - реализовать LogoutHandlerInterface
, на который косвенно ссылаются на symfony документы , о которых вы упомянули (упоминается LogoutSuccessHandlerInterface
, в котором есть комментарий относительно LogoutHandlerInterface
: «Если вы хотите выполнить только какую-либо задачу очистки, связанную с выходом из системы, используйте взамен LogoutHandlerInterface.»)
Для меня это похоже на обработчик событий, но он не использует систему событий, так что ... что угодно.
Тем не менее, аргументы, предоставленные вашему LogoutHandler
, получат TokenInterface
с TokenInterface::getUser()
, который возвращает текущего пользователя. (внедрение зависимости в конструктор должно предоставить вам дополнительные сервисы и прочее)
Альтернативой может быть реализация EventListener для события запроса ядра , которое LogoutListener
из symfony/security
Пакет использует для управления выходом из системы. Вы должны добавить тот же лог c, что и LogoutListener
и, вероятно, заставить его срабатывать до LogoutListener
, однако это немного более запутанный способ, и я действительно использовал бы LogoutHandler
.