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 ответов
проблема заключалась в том, что я настроил 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
Я просто боролся ад много времени, пытаясь все проб и ошибок.