Spring Boot自定义UserDetails的实现

问题描述 投票:0回答:1

我正在尝试使用spring安全性为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);

这是我做的和会话管理无法正常工作,我能够从两个不同的浏览器在一台计算机上登录,我不知道我做错了什么,请帮助我!

spring-boot spring-security spring-session
1个回答
0
投票

可能有很多原因,为什么一切都没有按预期工作。

也许你可以通过以下方式进一步深入研究:

  1. 检查你的pom.xml或你的手动版本管理Spring Boot和-Security版本冲突
  2. very good example附近的spring.io上关注spring-boot-starter-security
  3. 在手动添加任何代码之前,尽可能坚持框架。这尤其适用于实现上面提到的equalshashCode方法。
© www.soinside.com 2019 - 2024. All rights reserved.