一尘不染

如何使用JSF / MyFaces根据用户角色创建条件?

jsp

我必须从JSP页面读取当前用户的角色的哪些选项?我知道visibleOnUserRole="myRole"Tomahawk组件的属性,但是我需要角色来完成比简单可见性更复杂的事情。


阅读 262

收藏
2020-06-10

共1个答案

一尘不染

的ExternalContext暴露用户和角色信息。

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");
    }

}

如果您在Servlet中使用JSF,则此信息将映射到HttpServletRequest公开的值。

您可以使用托管bean通过表达式语言将值公开给视图。

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