У меня проблемы с ограничением максимального количества сеансов на пользователя в приложении 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 намеки почему не работает?