Spring boot+spring security实现一个账号登陆一次
时间: 2023-03-20 15:03:20 浏览: 109
可以通过在Spring Security配置中设置`maximumSessions`来限制同一账号的并发登陆数,将该值设置为1即可实现一个账号只能在一个客户端登陆一次。以下是一个简单的Spring Security配置示例:
```java
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/public/**").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/home")
.permitAll()
.and()
.logout()
.logoutUrl("/logout")
.invalidateHttpSession(true)
.clearAuthentication(true)
.permitAll();
http.sessionManagement()
.maximumSessions(1)
.expiredUrl("/login?expired")
.sessionRegistry(sessionRegistry());
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService);
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public SessionRegistry sessionRegistry() {
return new SessionRegistryImpl();
}
}
```
在`http.sessionManagement()`中设置`maximumSessions(1)`即可限制同一账号的并发登陆数。同时需要添加`SessionRegistry`来追踪并管理用户的会话。