我已经看到Spring Security OAuth2样本已在spring-servlet.xml
,
<http pattern="/users/**" create-session="never" entry-point-ref="oauthAuthenticationEntryPoint"
access-decision-manager-ref="accessDecisionManager" xmlns="http://www.springframework.org/schema/security">
<anonymous enabled="false" />
<intercept-url pattern="/photos" access="ROLE_USER,SCOPE_READ" />
<intercept-url pattern="/photos/trusted/**" access="ROLE_CLIENT,SCOPE_TRUST" />
<intercept-url pattern="/photos/user/**" access="ROLE_USER,SCOPE_TRUST" />
<intercept-url pattern="/photos/**" access="ROLE_USER,SCOPE_READ" />
<custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER" />
<access-denied-handler ref="oauthAccessDeniedHandler" />
</http>
pattern
标记中的http
属性是否有效?我在spring-security-2.0.1.xsd
中找不到它的定义。如果它有效,此模式与intercept-url
的{{1}}属性的关系是什么?例如,拦截路径pattern
是否具有/photos/user/**
的最终匹配拦截路径?感谢。
答案 0 :(得分:8)
在3.1中引入了pattern
属性,该属性为多个过滤器链引入了名称空间支持。 Spring Security 2已经过时了(你不应该使用它)。
intercept-url
元素中的模式是独立的,因为它们与传入的请求URI匹配,其方式与检查过滤器链http
模式的方式相同。但是,如果后者不匹配,则过滤器链根本不会应用于请求,因此为了产生任何效果,它们必须与过滤器链模式一致。
对于您发布的示例,这意味着/photos
模式都不会产生任何影响。它们都应该具有主过滤器链匹配的前缀 - 即它们应该以{{1}}开头。
答案 1 :(得分:1)
在spring security 4的情况下,haseRole('ADMIN')检查角色,试试吧。
它适用于我。