Domanda

Quali opzioni devo leggere i ruoli dell'utente corrente dalle mie pagine JSP? Sono a conoscenza dell'attributo visibleOnUserRole = " myRole " sui componenti di Tomahawk, ma ho bisogno di ruoli per cose un po 'più complicate della semplice visibilità.

È stato utile?

Soluzione

Il ExternalContext espone l'utente e informazioni sul ruolo.

public class RolesAccess implements Serializable {

    public String getUserPrincipalName() {
        FacesContext context = FacesContext.getCurrentInstance();
        Principal principal = context.getExternalContext().getUserPrincipal();
        if(principal == null) {
            return null;
        }
        return principal.getName();
    }

    public String getUser() {
        FacesContext context = FacesContext.getCurrentInstance();
        return context.getExternalContext().getRemoteUser();
    }

    public boolean isManager() {
        FacesContext context = FacesContext.getCurrentInstance();
        return context.getExternalContext().isUserInRole("manager");
    }

}

Se si utilizza JSF nei servlet, queste informazioni sono associate ai valori esposti da HttpServletRequest .

È possibile utilizzare i bean gestiti per esporre i valori alla vista tramite Lingua delle espressioni .

<f:view>
    <h:outputLabel value="#{rolesBean.userPrincipalName}" />
    <h:outputLabel value="#{rolesBean.user}" />
    <h:outputLabel value="#{rolesBean.manager}" />
</f:view>

Altri suggerimenti

In Java EE 6 (che non era disponibile quando questa domanda è stata posta / risposta), puoi testare i ruoli direttamente dalla variabile request nel tuo codice Facelets. Questo è super conveniente.

per es.

<h:outputText value="hi, admin!" rendered="#{request.isUserInRole('Admin')}" />
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top