- 该项目为学习springSecurity,仿写springSecurity的模拟项目
- webSecurity的build过程

- webSecurity的继承关系
-
WebSecurity类分析
- 继承 AbstractConfiguredSecurityBuilder<O, B extends SecurityBuilder>
- 实现AbstractSecurityBuilder的抽象方法doBuild()
- doBuild()的模板方法:1. init() 2.configure() 3. performBuild()
- init() 和 configure()方法都是在遍历配置类并实现其方法(参考下面的WebSecurityConfigurer接口分析)
- doBuild()的模板方法:1. init() 2.configure() 3. performBuild()
- 继承 AbstractSecurityBuilder<0>
- 实现SecurityBuilder的build方法
- 暴露抽象方法 doBuild(),由子类实现
- 实现AbstractSecurityBuilder的抽象方法doBuild()
- 实现 SecurityBuilder
- WebSecurity最终构建的是FilterChainProxy过滤器
- 继承 AbstractConfiguredSecurityBuilder<O, B extends SecurityBuilder>
-
WebSecurityConfigurer接口分析
- 泛型: WebSecurity: T extends SecurityBuilder
- 通过SecurityBuilder构建的Filter的子类
- 继承 SecurityConfigurer<O, B extends SecurityBuilder>
- O:需构建的对象; B:构建器
- 配置SecurityBuilder:1.init(B builder)初始化 2.进行配置configure(B builder)
- init()方法 : 1. 通过getHttp()构建HttpSecurity (参考下面HttpSecurity分析)
2.将HttpSecurity添加到WebSecurity的securityFilterChainBuilders属性中
- init()方法 : 1. 通过getHttp()构建HttpSecurity (参考下面HttpSecurity分析)
- 泛型: WebSecurity: T extends SecurityBuilder
-
HttpSecurity分析(和webSecurity的继承关系类似)
- 作用: 构建DefaultSecurityFilterChain过滤器链
- 配置类:1.泛型都继承HttpSecurityBuilder 2. 继承AbstractHttpConfigurer<T extends AbstractHttpConfigurer<T, B>, B extends HttpSecurityBuilder>
- HttpSecurityBuilder 继承 SecurityBuilder:该构建对象为了构建DefaultSecurityFilterChain
- DefaultSecurityFilterChain实现SecurityFilterChain
- HttpSecurityBuilder 继承 SecurityBuilder:该构建对象为了构建DefaultSecurityFilterChain
- 在构建的时候通过模板方法configure(B builder),会将之前添加的configure进行遍历配置configure(H http)--->添加过滤器
- FilterChainProxy会根据url匹配SecurityFilterChain过滤器链
-
- 徐靖峰springSecurity系列:https://www.cnkirito.moe/spring-security-2/