У меня есть приложение с микросервисной архитектурой, работающее с zuul api-шлюзом с добавленной функцией безопасности Oauth2.Теперь я могу войти в систему с одним и тем же пользователем в нескольких сеансах (я имею в виду несколько браузеров и несколько компьютеров).Поэтому я хочу ограничить множественный вход одного и того же пользователя.
Я использовал приведенный ниже код, чтобы ограничить доступ к тому же пользователю.Этот код отлично работает, когда я делаю выход из системы.Но я сталкиваюсь с проблемой, когда пользователь входит в систему и закрывает свой браузер или удаляет куки браузера.
static SessionRegistry sessionRegistry;
@Override
protected void configure(HttpSecurity http) throws Exception
{
http.csrf().disable().authorizeRequests().antMatchers("/login", "/logout").permitAll().anyRequest()
.authenticated().and().formLogin().loginPage("/login")
.failureHandler(loginAuthenticationFailureHandler).permitAll().and().logout().and().authorizeRequests()
.anyRequest().authenticated()
.and()
.sessionManagement()
.maximumSessions(1)
.maxSessionsPreventsLogin(true)
.sessionRegistry(sessionRegistry);
}
@Bean
public ServletListenerRegistrationBean<HttpSessionEventPublisher> httpSessionEventPublisher() {
return new ServletListenerRegistrationBean<HttpSessionEventPublisher>(new HttpSessionEventPublisher());
}
Может ли кто-нибудь помочь мне, как реализовать этот однопользовательский выход из сеанса при закрытии браузера и очистке файла cookie, или существует какая-либо отдельная процедура для разработки этой функции.