我正在尝试通过Spring Security设置Spring Boot 2的会话管理,并且我拥有带有实现UserDetails接口的custoom类,正如我从文档中知道的那样,我需要ovveride方法:equals和hashcode
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SimpleUser that = (SimpleUser) o;
return email.equals(that.email) &&
getPassword().equals(that.getPassword());
}
public int hashCode() {
return Objects.hash(email, getPassword());
}
安全设置:
http.anyRequest().authenticated()
.and()
.addFilterAt(authenticationFilter(), UsernamePasswordAuthenticationFilter.class)
.formLogin()
.loginPage("/login")
.and()
.logout().invalidateHttpSession(true)
.logoutUrl("/logout").permitAll()
.logoutSuccessHandler(logoutSuccessHandler())
.and().csrf().disable().sessionManagement().maximumSessions(1).maxSessionsPreventsLogin(true);
这是我所做的,会话管理不起作用,我能够通过两种不同的浏览器在一台计算机上登录,而且我不知道自己在做什么错,请帮帮我!
答案 0 :(得分:0)
可能有很多原因,为什么一切都不如预期。
也许您可以通过以下方式进一步深入研究:
pom.xml
或您对Spring Boot和-Security版本冲突造成的手动版本管理spring-boot-starter-security
构建的spring.io上遵循very good example equals
和hashCode
方法。