Spring security access с несколькими ролями

Я хочу определить доступ для некоторых страниц для пользователя, у которого есть одна из следующих ролей (ROLE1 или ROLE2)

Я пытаюсь настроить это в моем XML-файле spring security следующим образом:

<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]')"

etc

но, похоже, ничего не работает.

Я продолжаю получать исключение

java.lang.IllegalArgumentException: Unsupported configuration attributes:

или

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

как должно быть настроено?

спасибо

3 ответов


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

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

или

hasAnyRole('ROLE1','ROLE2')

проблема заключалась в том, что я настроил custom access-decision-manager-ref="accessDecisionManager" и не пропустил ни одного избирателя. Решается путем добавления org.springframework.security.web.access.expression.WebExpressionVoter to accessDecisionManager бобовые.


Если вы играете с OAuth2, убедитесь, что вы проверяете это, чтобы решить свои проблемы.

http://lightweightyes.blogspot.in/2012/08/spring-security-expressions-not-working.html

Я просто боролся ад много времени, пытаясь все проб и ошибок.