Программное добавление ролей после аутентификации

У меня есть следующая форма входа в JSF 2.1, работающая в Glassfish 3.1

<h:form id="loginForm">
        <h:panelGrid columns="2" cellspacing="5">
            <h:outputText value="Username" />
            <h:inputText value="#{loginHandler.username}" />
            <h:outputText value="Password:" />
            <h:inputText value="#{loginHandler.password}" />
            <h:outputLabel value="" />
            <h:commandButton value="Login" action="#{loginHandler.login}" />
        </h:panelGrid>
    </h:form>

И следующий компонент поддержки.

public String login() throws IOException, LoginException {

    log.debug("Trying to login with username " + username);

    HttpSession session = getRequest().getSession(true);

    try {
        getRequest().login(username, password);

        // if OK, add Roles
                    ????????
                    ...................

    } catch (ServletException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    log.debug("USER principal === " + getRequest().getUserPrincipal());

    return "home";
}

Вопрос в том, как я могу программно добавлять роли в UserPrincipal после успешного входа в систему?

Обновление 1: Я попытался получить Subject, используя следующий код, но subject == null.

Subject thisSubject = Subject.getSubject(AccessController
                .getContext());

Спасибо, Коэн

6
задан Coen Damen 1 February 2012 в 11:02
поделиться