Как отображать зарегистрированного пользователя, приложение JSF 2.0 с защитой на основе форм

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

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

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

Вход в систему как имя пользователя

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

Ответ 1

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

#{request.remoteUser}

Ответ Tobbe будет хорошо работать, чтобы получить удаленный пользователь из резервной копии bean.

Ответ 2

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

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

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

Ответ 3

в вашем классе 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;
}

Ответ 4

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