Вы можете контролировать это, если используете spring-security
.Следующий пример кода предназначен для веб-приложения с весенней загрузкой, использующего зависимости spring-boot-starter-web
и spring-boot-starter-security
(а также, при необходимости, вариант Spring-сеанса). Предполагается, что вы не хотите более 2 одновременных входов от одного и того же пользователя, и выхотите предотвратить будущие входы в систему:
@Configuration
@EnableWebSecurity
public class AppSecurityConfig extends WebSecurityConfigurerAdapter {
//override this method as required
public UserDetailsService userDetailsService() {}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement()
.maximumSessions(2)
.maxSessionsPreventsLogin(true)//prevents login for > 2attempts and sends to the authentication-failure-url
.sessionRegistry(sessionRegistry());
}
@Bean
public SessionRegistry sessionRegistry() {
return new SessionRegistryImpl();
}
}
Если вы хотите детализированное управление, вы можете взять бин sessionRegistry
, указанный выше, и использовать его для получения принципалов (пользователей) и окончания их сеансов и т. д.
Дополнительную информацию можно найти в документации по https://docs.spring.io/spring-security/site/docs/5.0.5.RELEASE/reference/htmlsingle/#concurrent-sessions