Прослушиватель событий тайм-аута весенней загрузки - PullRequest
0 голосов
/ 05 октября 2018

Я хочу выполнить пользовательское событие, когда пользователь вышел из сеанса.Пользователь успешно вышел из системы через ровно столько времени, сколько указано в моем application.properties:

server.servlet.session.timeout=10
server.servlet.session.cookie.max-age=10

Я нашел несколько похожих решений, в которых используется SessionDestroyedEvent, например:

@Slf4j
@Component
public class SessionExpiredListener implements ApplicationListener<SessionDestroyedEvent> {

    @Override
    public void onApplicationEvent(SessionDestroyedEvent event) {
        for (SecurityContext securityContext : event.getSecurityContexts()) {
            Authentication authentication = securityContext.getAuthentication();
            UserPrincipal user = (UserPrincipal) authentication.getPrincipal(); // UserPrincipal is my custom Principal class
            log.debug("Session expired!" + user.getUsername());
            // do custom event handling
        }
    }
}

Проблема в том, что SessionDestroyedEvent не запускается одновременно с таймаутом сеанса, в моих тестах он срабатывал до 5 минут после истечения сеанса.

Я также пытался использовать sessionDestroyed в HttpSessionListener, нос похожими результатами.

Есть ли событие, которое сработает точно по истечении сеанса, или есть какой-то способ достичь этого?

1 Ответ

0 голосов
/ 05 октября 2018

Метод sessionDestroyed() вызывается, когда веб-контейнер завершает сеанс.В Tomcat истечение сеанса происходит каждую минуту, и я думаю, что это имеет место в других контейнерах сервлетов.Таким образом, даже после истечения времени ожидания сеанса может возникнуть задержка до следующего обнаружения истечения срока действия.

Управление сеансом выполняется контейнером сервлета, и ваше приложение получает уведомление от него.И нет способа получить уведомление в точное время истечения сеанса.

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