В Spring Security вы можете настроить управление сеансами и контролировать максимальное количество сеансов для одного пользователя следующим образом:
sessionManagement()
.maximumSessions(1)
.maxSessionsPreventsLogin(true);
maximumSessions
контролирует максимальное количество сеансов для пользователя.По умолчанию разрешено любое количество пользователей.
maxSessionsPreventsLogin
, если установлено значение true, предотвращает аутентификацию пользователя при достижении maximumSessions
.
Так что в приложении jhipster вы можетеconfig для предотвращения нескольких входов в систему для одного и того же пользователя в файле SecurityConfiguration
, например:
@Override
public void configure(HttpSecurity http) throws Exception {
http
.csrf()
.disable()
.addFilterBefore(corsFilter, UsernamePasswordAuthenticationFilter.class)
.exceptionHandling()
.authenticationEntryPoint(problemSupport)
.accessDeniedHandler(problemSupport)
.and()
.headers()
.frameOptions()
.disable()
.and()
.authorizeRequests()
.antMatchers("/api/register").permitAll()
.antMatchers("/api/activate").permitAll()
.antMatchers("/api/authenticate").permitAll()
.antMatchers("/api/account/reset-password/init").permitAll()
.antMatchers("/api/account/reset-password/finish").permitAll()
.antMatchers("/api/**").authenticated()
.antMatchers("/websocket/tracker").hasAuthority(AuthoritiesConstants.ADMIN)
.antMatchers("/websocket/**").permitAll()
.antMatchers("/management/health").permitAll()
.antMatchers("/management/info").permitAll()
.antMatchers("/rest/**").permitAll()
.antMatchers("/management/**").hasAuthority(AuthoritiesConstants.ADMIN)
.and()
.apply(securityConfigurerAdapter())
.and()
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.maximumSessions(1)
.maxSessionsPreventsLogin(true);
}