具有多个角色的弹簧安全访问

2022-09-02 08:57:44

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

我正在尝试在我的spring安全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'])'

应该如何配置?

谢谢


答案 1

如何尝试分开。请参阅此处此处的文档。,

<security:intercept-url pattern="/rest/api/myUrl*" access="ROLE1,ROLE2"/>

hasAnyRole('ROLE1','ROLE2')

答案 2

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

通过添加到豆类中解决。org.springframework.security.web.access.expression.WebExpressionVoteraccessDecisionManager


推荐