Spring доступ к безопасности с несколькими ролями

Я хочу определить доступ для некоторых страниц для пользователя, который имеет одну из следующих ролей (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

Проблема заключалась в том, что я настроил пользовательский access-decision-manager-ref="accessDecisionManager" и не прошел ни одного из избирателей.

org.springframework.security.web.access.expression.WebExpressionVoter добавлением org.springframework.security.web.access.expression.WebExpressionVoter для accessDecisionManager компонента accessDecisionManager.

Ответ 2

Как попробовать с , разделить. См. Doc здесь и здесь.

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

ИЛИ

hasAnyRole('ROLE1','ROLE2')