我有一个带有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'
该类位于类路径中,我可以使用<% .. %>
等访问它。
处理这个问题的最佳方法是什么?
答案 0 :(得分:9)
要引用hasRole
中的实例,您需要使用特殊的T
运算符并使用该类的完全限定名称。
<sec:authorize access="hasRole(T(package.UserAccess).ADMIN)">
答案 1 :(得分:0)
或许缺少单引号?试试这个:
<sec:authorize access="hasRole('UserAccess.ADMIN')">