Пользовательская реализация Spring Boot UserDetails

Я пытаюсь настроить управление сеансом для весенней загрузки 2 с весенней безопасностью, и у меня есть пользовательский класс с реализацией интерфейса UserDetails, как я знаю из документации, мне нужны методы 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);

Это то, что я сделал, и управление сеансом не работает, я могу войти на один компьютер из двух разных браузеров, и я не знаю, что я делаю неправильно, помогите мне, пожалуйста!


person Dmytro Ileiko    schedule 15.03.2019    source источник


Ответы (1)


Может быть много причин, почему что-то не работает должным образом.

Может быть, вы могли бы углубиться в это:

  1. Проверьте свой pom.xml или ручное управление версиями на предмет конфликтов версий Spring Boot и -Security.
  2. Следуйте очень хорошему примеру на spring.io, построенном вокруг spring-boot-starter-security
  3. Придерживайтесь фреймворка как можно дольше, прежде чем вручную добавлять какой-либо код. Это особенно относится к реализации методов equals и hashCode, о которых вы упоминали выше.
person mle    schedule 15.03.2019