一尘不染

具有多个角色的Spring安全性访问

java

我想为具有以下角色之一(ROLE1或ROLE2)的用户定义某些页面的访问权限

我正在尝试在我的spring security xml文件中进行如下配置:

<security:http entry-point-ref="restAuthenticationEntryPoint" access-decision-manager-ref="accessDecisionManager" xmlns="http://www.springframework.org/schema/security" use-expressions="true">
        <!-- skipped configuration -->
        <security:intercept-url pattern="/rest/api/myUrl*" access="hasRole('ROLE1') or hasRole('ROLE2')" />

        <!-- skipped configuration -->
    </security:http>

我尝试了各种方法,例如:

access="hasRole('ROLE1, ROLE2')"
access="hasRole('ROLE1', 'ROLE2')"
access="hasAnyRole('[ROLE1', 'ROLE2]')"

等等

但似乎没有任何效果。

我一直在例外

java.lang.IllegalArgumentException: Unsupported configuration attributes:

要么

java.lang.IllegalArgumentException: Failed to parse expression 'hasAnyRole(['ROLE1', 'ROLE2'])'

应该如何配置?

谢谢


阅读 175

收藏
2020-12-03

共1个答案

一尘不染

问题是我配置了自定义access-decision-manager-ref="accessDecisionManager" ,但没有通过其中一名选民。

通过添加org.springframework.security.web.access.expression.WebExpressionVoteraccessDecisionManagerbean中来解决。

2020-12-03