Как узнать, кто вошел в систему из файла server.xml? - PullRequest
0 голосов
/ 24 мая 2018

Я настроил файл server.xml в приложении Java Spring для аутентификации пользователей при входе в систему из таблиц и ролей базы данных.Мне интересно, как в коде Java можно проверить, кто вошел в приложение?

Я знаю, что в файле jsp я могу просто использовать следующий синтаксис для отображения имени:

${pageContext.request.userPrincipal.name} .

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

В вашем Spring MVC Controller просто добавьте следующее утверждение:

String loggedUser = request.getUserPrincipal().getName();

, где request - это объект типа HttpRequest, предоставленный вам Spring onспрос.

0 голосов
/ 25 мая 2018

Вы можете написать метод для регистрации текущего пользователя, так как вам могут понадобиться следующие места, как показано ниже:

public User getCurrentLoggedInUser() {
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        if (auth != null) {
            Object principal = auth.getPrincipal();
            if (principal instanceof User) {
                return ((User) principal);
            }
        }

    }
0 голосов
/ 24 мая 2018

Очень красивая статья для этого дана в 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...