从我的 JSP 页面中读取当前用户的角色需要哪些选项?我知道visibleOnUserRole="myRole"
Tomahawk 组件的属性,但我需要角色来处理比简单可见性更复杂的事情。
Chei
问问题
8748 次
2 回答
7
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 通过Expression Language向视图公开值。
<f:view>
<h:outputLabel value="#{rolesBean.userPrincipalName}" />
<h:outputLabel value="#{rolesBean.user}" />
<h:outputLabel value="#{rolesBean.manager}" />
</f:view>
于 2008-11-13T13:06:19.847 回答
2
在 Java EE 6(在询问/回答此问题时不可用)中,您可以直接从request
Facelets 代码中的变量测试角色。这超级方便。
例如
<h:outputText value="hi, admin!" rendered="#{request.isUserInRole('Admin')}" />
于 2012-12-05T22:37:06.200 回答