Как отобразить зарегистрированного пользователя, приложение JSF 2.0 с защитой на основе форм - PullRequest
12 голосов
/ 30 декабря 2010

Я сконфигурировал вход в систему на основе форм в моем приложении JSF 2.0 на сервере GlassFish 3, используя пользовательскую область. Какой самый простой способ получения информации о зарегистрированном пользователе, то есть имени пользователя.

Возможно ли это? Или текущий сеанс просто связан с ролью безопасности? Если да, то есть ли способ сделать это возможным без изменения конфигурации журнала?

Проще говоря, я хочу отобразить простое сообщение вроде:

Вы вошли как имя пользователя

на моих веб-страницах.

Ответы [ 4 ]

20 голосов
/ 30 декабря 2010

Самый простой способ получить доступ к вошедшему в систему пользователю через EL (язык выражений) в JSF 2.0:

#{request.remoteUser}

Ответ Тоббе был бы полезен для получения доступа к удаленному пользователю из поддерживающего компонента.

15 голосов
/ 30 декабря 2010

Простой (может быть, не самый лучший) ответ был:

FacesContext.getCurrentInstance().getExternalContext().getRemoteUser()

Я шокирован тем, как долго я понял это.

0 голосов
/ 12 июня 2014

Внутри Facelets вы можете использовать #{request.userPrincipal.name}.

0 голосов
/ 04 октября 2013

в вашем классе loginmanagedbean определяют currentUSer, а в getter это: я не использовал внешнюю систему входа в систему, и это работает для меня.

    public Login getCurrentUser() {
    FacesContext fc = FacesContext.getCurrentInstance();
    ExternalContext externalContext = fc.getExternalContext();
    if (externalContext.getUserPrincipal() == null){
        logger.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!current principal is null"); 
    }
    else{ 
        Integer id = Integer.parseInt(externalContext.getUserPrincipal().getName());
        logger.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!LOGGED USER "+ id); 
        try {
            currentUser = getLoginService().getLoginById(id);
        }
        catch (Exception ex) {
        } 
    } 
    return currentUser;
}
...