【发布时间】:2012-08-15 15:10:13
【问题描述】:
在 spring security intercept-url 配置中,如果我为特定路径定义了特定角色,比如 ROLE_USER,那么只有当用户具有该权限时,该路径才应该是可访问的。这是有道理的,但是如果我将角色设置为 ROLE_ANONYMOUS,<intercept-url pattern="/resources/**" access="ROLE_ANONYMOUS"/> 即使用户经过身份验证,它也不应该可以访问,比如当用户拥有 ROLE_USER 权限时?但这不会发生。
这是日志
Checking match of request : '/resources/js/test.js'; against '/resources/**'
Secure object: FilterInvocation: URL: /resources/js/test.js; Attributes: [ROLE_ANONYMOUS]
Previously Authenticated: org.springframework.security.authentication.UsernamePasswordAuthenticationToken***********************************************
Voter: org.springframework.security.access.vote.RoleVoter@1712310, returned: -1
然后我得到一个拒绝访问异常。我知道如果我在我的 Http 配置中添加 <intercept-url pattern="/resources/**" access="ROLE_ANONYMOUS,ROLE_USER"/> 它工作正常。但是在上面的情况下,它是这样的还是我做错了什么。
【问题讨论】:
标签: spring spring-mvc spring-security