Отключите множественный вход в систему с одним и тем же пользователем в весенней загрузке и приложении OAuth2 - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть приложение с микросервисной архитектурой, работающее с 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, или существует какая-либо отдельная процедура для разработки этой функции.

...