Ограничить максимальное количество одновременных сеансов на пользователя с помощью безопасности Spring - PullRequest
0 голосов
/ 27 февраля 2020

У меня проблемы с ограничением максимального количества сеансов на пользователя в приложении Spring. Я уже перебрал документы Spring и другие вопросы SO, но безуспешно.

Изначально проект имел форму входа в систему с полями имени пользователя и пароля и кнопкой входа в систему, и похоже, что он использует Spring-security , Конфигурация пружины в XML. Версия Spring - 3.1.2

Итак, вот что я пробовал до сих пор:

Я добавил тег слушателя HttpEventSessionPublisher в сети. xml

Я добавил управление сессиями и теги управления параллелизмом в Spring-Security. xml

<http ...>
    <session-management>
        <concurrency-control max-sessions="2" />
    </session-management>
</http>

У меня есть компонент, который является AuthenticationProvider, который реализует "UserDetailsService" и переопределяет метод "loadUserByUser

@Override
public UserDetails loadUserByUsername(final String username) throws UsernameNotFoundException {
  List<UserDetails> users = loadUsersByUsername(username);
  ...
  return users.get(0);

}

protected List<UserDetails> loadUsersByUsername(String username){
  return getJdbcTemplate().query(APPLICATION_QUERY, new String[] {username}, new RowMapper<UserDetails>()
  {
    public UserDetails mapRow(ResultSet rs, int rowNum) throws SQLException{
      ...
      return new User(username, password, enabled, true, true,true,getAuthorityResolver().getAuthorityListFrom(rs));
    }
  });
}

I попытался изменить "нового пользователя" для класса "CustomUser", который реализовал метод User и переопределил hashcode и equals, но это не сработало.

Пока я не изменял LoginController.

Any намеки почему не работает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...