Spring Security基础知识

时间:2009-12-25 13:22:32

标签: java spring jsf spring-security

如果经过身份验证的用户具有相应的权限,如何使链接可见?

我正在使用JSF,据我所知,我应该使用应该调用backing bean的布尔方法的组件的rendered属性。

我前段时间甚至找到了代码,但现在我再也找不到它了。那么,任何人都可以给我一个这样的布尔方法的例子,使用spring security 吗? (或者,更好的是,链接到描述此问题的某篇文章)。

3 个答案:

答案 0 :(得分:5)

我们使用SecurityContextHolder来访问当前登录的用户。然后我们使用用户getAuthorities()方法来获取她的角色,从而产生(大致)以下内容:

((UserDetails)SecurityContextHolder.getPrincipal()).getAuthorities();

答案 1 :(得分:4)

rendered属性(以及disabledreadonly)并不一定会期望像这样返回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/

基本上你应该访问校长检查它的权限......