限制一个账号只能有一个用户登录
1、最简单的方法就是在数据库设置一个登录状态,假如登录时置为1,退出登录时置为0,每次登录退出时更新状态即可
存在的bug:断电、强制关闭浏览器,状态不会改变,影响下次登录
解决方案:几分钟后用户无操作,自动退出,更新状态。
2、Spring Security
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/user/**").access("hasRole('ADMIN') or hasRole('USER')")
.and().formLogin().permitAll();
//以下这句就可以控制单个用户只能创建一个session,也就只能在服务器登录一次
http.sessionManagement().maximumSessions(1).expiredUrl("/login");
}