您现在的位置是:亿华云 > IT科技类资讯
我们一起学习 Spring Security过滤器链体系
亿华云2025-10-03 20:30:36【IT科技类资讯】3人已围观
简介在学习Spring Security的时候你有没有下面这两个疑问:Spring Security的登录是怎么配置的?Spring Security的访问控制是什么机制?SpringBootWebSec
在学习Spring Security的学习时候你有没有下面这两个疑问:
Spring Security的登录是怎么配置的?Spring Security的访问控制是什么机制?SpringBootWebSecurityConfiguration
上面两个疑问的答案就在配置类SpringBootWebSecurityConfiguration中。你可以按照下面这个思维导图去理解这个自动配置:
SpringBootWebSecurityConfiguration为Spring Boot应用提供了一套默认的过滤Spring Security配置。
@Bean
@Order(SecurityProperties.BASIC_AUTH_ORDER)
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
http.authorizeRequests().anyRequest().authenticated().and().formLogin().and().httpBasic();
return http.build();
}
这里的器链配置为:所有的请求都必须是认证用户发起的,同时开启表单登录功能以及Http Basic Authentication认证功能。体系我们访问/foo/bar时需要登录认证并且能够进行表单登录就是学习这个配置起作用了。这个是过滤我们日常开发需要自定义的,在HttpSecurity相关的器链文章中胖哥也进行了讲解。这个SecurityFilterChain到底是体系什么呢?
SecurityFilterChain
从上面看得出HttpSecurity就是一个构建类,它的学习使命就是构建出一个SecurityFilterChain:
public interface SecurityFilterChain {
// 当前请求是否匹配
boolean matches(HttpServletRequest request);
// 一揽子过滤器组成的有序过滤器链
List
}
当一个请求HttpServletRequest进入SecurityFilterChain时,会通过matches方法来确定是过滤否满足条件进入过滤器链。就好比你是高防服务器器链VIP走的是VIP通道,享受的体系是VIP的一系列待遇;你是普通用户,就走普通用户的学习通道并享受普通用户的待遇。
不管用户是过滤哪种角色,都走的器链是一个过滤器链,一个应用中存在1-n个SecurityFilterChain。那谁来管理多个SecurityFilterChain呢?
记住这个公式HttpSecurity ->SecurityFilterChain。
FilterChainProxy
FilterChainProxy是一个GenericFilterBean(即使Servlet Filter又是Spring Bean),它管理了所有注入Spring IoC容器的SecurityFilterChain。在我刚接触Spring Security的时候是这样配置FilterChainProxy的:
根据不同的请求路径匹配走不同的SecurityFilterChain。下面是示意图:
后面还会对遇到这个类,现在你只需要明白上面这个图就行了。
请注意:在同一过滤器链中不建议有多个FilterChainProxy实例,云服务器而且不应将其作为单纯的过滤器使用,它只应该承担管理SecurityFilterChain的功能。
DelegatingFilterProxyS
ervlet 容器和Spring IoC容器之间的Filter生命周期并不匹配。为了让Spring IoC容器管理Filter的生命周期,FilterChainProxy便交由Spring Web下的DelegatingFilterProxy来代理。而且FilterChainProxy不会在添加到应用程序上下文的任何过滤器Bean上调用标准Servlet过滤器生命周期方法,FilterChainProxy的生命周期方法会委托给DelegatingFilterProxy来执行。而DelegatingFilterProxy作为Spring IoC和Servlet的连接器存在。
简单总结
上面的三个概念非常重要,涉及到Spring Security的整个过滤器链体系。但是作为初学者来说,能看懂多少就看懂多少,不要纠结哪些没有理解,因为目前学习阶段的层次达不到是非常正常的。但是等你学完了Spring Security之后,这几个概念一定要搞明白。
很赞哦!(39)
热门文章
站长推荐
第五步:重复第四步,直到找到正确的纪录。
数据中心“超级客户”——互联网企业的算力布局
算力时代已至,服务器也要“四高”发展
赋能行业创新, 新华三新测试技术打造卓越服务
在数以亿计的网站中,我们应该抓住每一个可能带来宣传的机会,域名可以带有企业的名字,一般可以使用汉语拼音或者英语单词或者是相关缩写的形式,只要用户记住了你企业的名字,就能很容易的打出你的网站域名,同样的,记住了网站域名也能很快的记住你公司的名字。
戴尔科技推出业界首款“远边缘”服务器XR4000,充分展现其在边缘服务器领域的远见卓识
NVIDIA 与 Ampere Computing 携手创建用于云游戏的Arm 架构云原生服务器平台
戴尔科技集团在存储领域包揽了所有的最高荣誉!