Spring Boot пользовательская реализация UserDetails - PullRequest
0 голосов
/ 15 марта 2019

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

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

1 Ответ

0 голосов
/ 15 марта 2019

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

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

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