Очень красивая статья для этого дана в http://www.baeldung.com/spring-security-track-logged-in-users
. Вы можете использовать HttpSessionBindingListener, чтобы обновлять список зарегистрированных пользователей всякий раз, когда пользовательская информация добавляется в сеанс или удаляется из сеанса на основепользователь входит в систему или выходит из системы.
Он будет прослушивать события типа HttpSessionBindingEvent, которые инициируются всякий раз, когда значение устанавливается или удаляется, или, другими словами, связывается или не связывается сСеанс HTTP.
@Component
public class LoggedUser implements HttpSessionBindingListener {
private String username;
private ActiveUserStore activeUserStore;
public LoggedUser(String username, ActiveUserStore activeUserStore) {
this.username = username;
this.activeUserStore = activeUserStore;
}
public LoggedUser() {}
@Override
public void valueBound(HttpSessionBindingEvent event) {
List<String> users = activeUserStore.getUsers();
LoggedUser user = (LoggedUser) event.getValue();
if (!users.contains(user.getUsername())) {
users.add(user.getUsername());
}
}
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
List<String> users = activeUserStore.getUsers();
LoggedUser user = (LoggedUser) event.getValue();
if (users.contains(user.getUsername())) {
users.remove(user.getUsername());
}
}
// standard getter and setter
}
Вы можете просмотреть весь код здесь
Вы также можете получить текущего зарегистрированного пользователя из Spring security Пройдите через этоartical
или по запросу также
request.getUserPrincipal().getName();