Session 并发控制实现及原理分析
237字小于1分钟
2024-08-08
并发控制
设置只有一个会话
在 SecurityConfig
配置中,设置最大会话数量为 1
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests().anyRequest().authenticated()
.and()
.formLogin()
.permitAll()
.and()
.sessionManagement()
.maximumSessions(1);
return http.build();
}
}
在第一个客户端上登录

在第二个客户端上登录

刷新第一个客户端,发现 session 过期了。默认策略:同一个用户,后面登录的挤掉前面登录的

禁止第二个客户端登录
@Configuration
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests().anyRequest().authenticated()
.and()
.formLogin()
.permitAll()
.and()
.sessionManagement()
.maximumSessions(1)
.maxSessionsPreventsLogin(true);
return http.build();
}
}
登录第一个客户端

登录第二个客户端
