我想为具有以下角色之一的用户(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'])'
应如何配置?
由于
答案 0 :(得分:26)
<security:intercept-url pattern="/rest/api/myUrl*" access="ROLE1,ROLE2"/>
OR
hasAnyRole('ROLE1','ROLE2')
答案 1 :(得分:1)
问题是我配置了自定义access-decision-manager-ref="accessDecisionManager"
并没有通过其中一个选民。
通过将org.springframework.security.web.access.expression.WebExpressionVoter
添加到accessDecisionManager
bean来解决。
答案 2 :(得分:-3)
如果您正在使用OAuth2播放,请务必检查此问题以解决问题。
http://lightweightyes.blogspot.in/2012/08/spring-security-expressions-not-working.html
我只是花了很多时间来尝试所有的试验和错误。