Пожалуйста, исправьте меня, если я ошибаюсь.
Я думаю, что ответ Адама и @ elysch является неполным. Я заметил, что нужно добавить слушателя:
servletContext.addListener(HttpSessionEventPublisher.class);
в
public class AppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) {
...
servletContext.addListener(HttpSessionEventPublisher.class);
}
с конф безопасности:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(final HttpSecurity http) throws Exception {
// ...
http.sessionManagement().maximumSessions(1).sessionRegistry(sessionRegistry());
}
@Bean
public SessionRegistry sessionRegistry() {
return new SessionRegistryImpl();
}
@Bean
public HttpSessionEventPublisher httpSessionEventPublisher() {
return new HttpSessionEventPublisher();
}
}
И тогда вы получите текущие онлайн-пользователей!
Ответы, кажется, правильные, но для меня это всегда возвращается и пустая коллекция, любая идея? – azerafati
Для записи класс ServletListenerRegistrationBean является частью Spring Boot, поэтому вам придется добавить зависимость с Spring Boot. В моей организации только Spring MVC и Spring Security одобрены для использования, поэтому я не могу использовать ваше решение (кстати, это выглядит потрясающе). Придется найти другой способ добиться этого. Благодаря! –
@mailman да, я сохраняю сессию, и с этого сеанса я получаю список зарегистрированных пользователей –