Spring Redis Session - Сессия уничтожена. - PullRequest
0 голосов
/ 06 мая 2020

Я хочу обработать событие уничтожения сеанса и выполнить некоторую очистку. Чтобы сделать это, я создал SessionDestroyedEvent listener, но меня беспокоят две вещи:

При публикации события, связанного с удалением сеанса,

1) В кластерной среде все экземпляры прослушивают это событие, и они пытаются делать то же самое в одно и то же время. Как я могу предотвратить это?

2) Я могу найти имя пользователя с помощью этого (1) фрагмента кода, но он выглядит грязным. Есть ли какой-нибудь «чистый» способ найти имя пользователя?

Вот мой слушатель событий

@Component
class SessionDestroyEventListener implements ApplicationListener<SessionDestroyedEvent> {

    @Override
    public void onApplicationEvent(SessionDestroyedEvent event) {
        (1)String username = ((SecurityContextImpl) event.getSession().getAttribute("SPRING_SECURITY_CONTEXT")).getAuthentication().getName();

        //some code

        logger.info("User session destoyed: {}", username);
    }

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