这是我的安全配置
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests().antMatchers("/assets/**", "/register/**", "/","/login**")
.permitAll().antMatchers("/profile/**").hasAuthority("ROLE_1").anyRequest().authenticated()
.antMatchers("/actuator/**").hasAuthority("ROLE_2").anyRequest().authenticated()
.and().formLogin().loginPage("/login").permitAll()
.and().sessionManagement().maximumSessions(1).maxSessionsPreventsLogin(true).expiredUrl("/login?expired")
.and().and().logout().deleteCookies("JSESSIONID").invalidateHttpSession(true)
.and().csrf().disable();
// .failureUrl("/fail");
}
这是将HttpSessionEventPublisher添加到应用上下文中
@Bean
public HttpSessionEventPublisher httpSessionEventPublisher() {
return new HttpSessionEventPublisher();
}
请让我知道我在想什么。我仍然能够使用相同的凭据从两个浏览器登录。
答案 0 :(得分:0)
我找到了解决方案。这是重写我的User类的equals和hashCode方法,该方法基于以下解决方案实现UserDetails。比较已验证主体的UserDetails对象是如何控制/衡量会话并发性
http://forum.spring.io/forum/spring-projects/security/99166-maximum-sessions-1-does-not-work