如何为Spring Security hasRole使用常量

时间:2013-10-01 04:52:41

标签: jsp spring-security

我有一个带有Spring Security的JSP。我有一个简单的标记,用于确定用户是否具有ADMIN角色,如下所示:

<sec:authorize access="hasRole('ADMIN')">

并且工作正常。我现在正试图在整个站点上实现许多角色,所以我有一个UserAccess类,其中静态字符串作为我所有角色的常量。所以我试试这个:

<sec:authorize access="hasRole(UserAccess.ADMIN)">

但这是在扔:

Field or property 'UserAccess' cannot be found on object of type 
'org.springframework.security.web.access.expression.WebSecurityExpressionRoot'

该类位于类路径中,我可以使用<% .. %>等访问它。
处理这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:9)

要引用hasRole中的实例,您需要使用特殊的T运算符并使用该类的完全限定名称。

<sec:authorize access="hasRole(T(package.UserAccess).ADMIN)">

答案 1 :(得分:0)

或许缺少单引号?试试这个:

 <sec:authorize access="hasRole('UserAccess.ADMIN')">