Spring Security - Security None,过滤无,访问Pilitall
最后修改:2月18日,2020年
1.概述
Spring Security提供了几种机制来将请求模式配置为不安全的或允许所有访问。根据这些机制的不同——这可能意味着在那条路径上根本不运行安全过滤器链,或者运行过滤器链并允许访问。
进一步阅读:
2。访问=“pilitall”
建立A.< intercept-url >元素访问=“pilitall”将配置授权,以便所有请求都是允许在那条特定的道路上:
<拦截 - url pattern =“/ login *”Access =“PerpletAll”/>
或者,通过Java配置:
http.authorizeRequests()。反atchers(“/ login *”)。princall();
这是实现的不禁用安全筛选器- 这些仍然运行,因此仍将提供任何春季安全相关功能。
3.过滤器= "没有"
这是spring 3.1之前的特性在Spring 3.1中弃用并更换。
这过滤器属性在特定的请求路径上完全禁用Spring Security filters链:
<拦截 - url pattern =“/ login *”筛选器=“无”/>
当请求的处理需要一些春天安全性时,这可能会导致问题。
由于这是一个弃用的功能Spring版本,较新的3.0,使用Spring 3.1使用它会导致启动时的运行时异常:
严重:上下文初始化失败org.springframework.beans.factory.parsing.beandefinitionParsingException:配置问题:不再支持使用“筛选器=”无“”。请为要排除的模式定义一个单独的元素,并使用属性“security ='none”。违规资源:o.s.b.f.p.failfastproblemreporter.error(failfastproblemreporter.java:68)
4.安全=“无”
正如我们在上面的错误消息中看到的那样,Spring 3.1替换过滤器= "没有"有一个新的表达 -安全=“无”。
范围也发生了变化 - 这已不再指定< intercept-url >元素级别。相反,Spring 3.1允许多个
在实践中,这看起来像:
或使用Java配置:
web.igningors()。反atchers(“/资源/ **”);
而不是旧的:
<拦截 - URL模式=“/资源/ **”筛选器=“无”/>
类似于过滤器= "没有",这也将完全禁用该请求路径的安全滤波器链 - 因此在应用程序中处理请求时,Spring Security功能将无法使用。
这对于上面的例子来说不是问题,它们主要处理提供静态资源-没有实际处理的地方。但是,如果以某种方式以编程方式处理请求,那么安全功能,如需要频道,访问当前用户或调用安全方法将无法使用。
出于同样的原因,没有必要在
或者,Access ='is_authenticated_ananonymounds'可用于允许匿名访问。
5.警告安全=“无”
使用多个时
还要注意,如果是
一个通用匹配模式('/**')在过滤器链中的其他模式之前定义,导致它们被忽略。请检查您的命名空间或FilterChainProxy bean配置在o.s.s.c.h.DefaultFilterChainValidator.checkPathOrder
六,结论
本文讨论了允许访问春季安全路径的选项 - 专注于之间的差异filters =“无”,安全=“无”和Access =“perplate”。
像往常一样,可以使用示例在GitHub。