【问题标题】:Confusion in Spring Security Filter ChainSpring Security 过滤器链中的困惑
【发布时间】:2013-09-30 16:03:58
【问题描述】:
我刚刚开始研究 Spring 安全性。我正在阅读 Spring Security 参考指南。这里写成
使用 filters="none" 通过在
Spring Security 的 FilterChainProxy,而访问属性是
用于配置单个过滤器中的FilterSecurityInterceptor
由命名空间配置创建的链。两者是
独立应用,所以如果你有一个访问限制
具有 filters="none" 属性的模式的子模式,
访问约束将被忽略,即使它首先列出。它
无法将 filters="none" 属性应用于模式 /**
因为这是由命名空间过滤器链使用的。在 3.1 版中
事情更加灵活。您可以定义多个过滤器链和
不再支持过滤器属性。
有人可以从参考文档中详细说明此注释吗?
【问题讨论】:
标签:
java
spring
spring-security
【解决方案1】:
在 spring 3.1 之前,假设你希望允许访问特定的 url/模式,即你不希望对其应用 spring 安全性,你可以添加
<sec:intercept-url pattern="/nonsecure/**" filters="none" />
这里 filters =none 创建一个空的安全过滤器链,因此这个资源不受 spring security 保护。
即使您添加访问属性以及过滤器=“无”,它也会被忽略。
对于 spring 3.1 及更高版本,您可以定义多个过滤器链,如
<security:http pattern="/nonsecure/**" security="none"/>
<security:http pattern="/secure/**" >
....other security config
</security:http>