如果经过身份验证的用户具有相应的权限,如何使链接可见?
我正在使用JSF,据我所知,我应该使用应该调用backing bean的布尔方法的组件的rendered
属性。
我前段时间甚至找到了代码,但现在我再也找不到它了。那么,任何人都可以给我一个这样的布尔方法的例子,使用spring security 吗? (或者,更好的是,链接到描述此问题的某篇文章)。
答案 0 :(得分:5)
我们使用SecurityContextHolder来访问当前登录的用户。然后我们使用用户getAuthorities()方法来获取她的角色,从而产生(大致)以下内容:
((UserDetails)SecurityContextHolder.getPrincipal()).getAuthorities();
答案 1 :(得分:4)
rendered
属性(以及disabled
和readonly
)并不一定会期望像这样返回boolean
的getter方法:
public boolean getBooleanValue() {
return this.booleanValue;
}
这些属性只需要一个布尔表达式,它可以是以下任何一个示例:
<h:someComponent rendered="#{myBean.booleanValue}" />
<h:someComponent rendered="#{myBean.intValue > 10}" />
<h:someComponent rendered="#{myBean.objectValue == null}" />
<h:someComponent rendered="#{myBean.stringValue != 'someValue'}" />
<h:someComponent rendered="#{!empty myBean.collectionValue}" />
<h:someComponent rendered="#{!myBean.booleanValue && myBean.intValue != 0}" />
<h:someComponent rendered="#{myBean.stringValue == 'oneValue' || myBean.stringValue == 'anotherValue'}" />
is
前缀也允许使用boolean
前缀:
public boolean isBooleanValue() {
return this.booleanValue;
}
您可以将弹性安全性所使用的任何API包装在getter中,并以上述方式之一在布尔EL表达式中使用它。
答案 2 :(得分:0)
你可以使用acegi-jsf组件:http://cagataycivici.wordpress.com/2006/01/19/acegi%5Fjsf%5Fcomponents%5Fhit%5Fthe/
基本上你应该访问校长检查它的权限......