如何为Spring Security hasRole使用常量

mma*_*ran 5 jsp spring-security

我有一个带有Spring Security的JSP.我有一个简单的标签,确定用户是否有这样的ADMIN角色:

<sec:authorize access="hasRole('ADMIN')">
Run Code Online (Sandbox Code Playgroud)

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

<sec:authorize access="hasRole(UserAccess.ADMIN)">
Run Code Online (Sandbox Code Playgroud)

但这是投掷:

Field or property 'UserAccess' cannot be found on object of type 
'org.springframework.security.web.access.expression.WebSecurityExpressionRoot'
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*r M 9

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

<sec:authorize access="hasRole(T(package.UserAccess).ADMIN)">
Run Code Online (Sandbox Code Playgroud)


poo*_*dle 0

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

 <sec:authorize access="hasRole('UserAccess.ADMIN')">
Run Code Online (Sandbox Code Playgroud)