5

我有一个带有 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'

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

4

2 回答 2

9

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

<sec:authorize access="hasRole(T(package.UserAccess).ADMIN)">
于 2013-10-01T08:42:53.070 回答
0

也许缺少单引号?尝试这个:

 <sec:authorize access="hasRole('UserAccess.ADMIN')">
于 2013-10-01T05:08:59.947 回答