SpringWebSecurity 笔记

用户自定义WebSecurityConfig初始化流程:

        WebSecurityConfiguration配置类在初始化时,通过setFilterChainProxySecurityConfigurer方法注入用户自定义WebSecurityConfigurerAdapter对象;     

@Autowired(required=false)
public void setFilterChainProxySecurityConfigurer(ObjectPostProcessor<Object> objectPostProcessor,@Value("#{@autowireWebSecurityConfigurersIgnoreParents.getWebSecurityConfigurers()}")List<SecurityConfigurer<Filter,WebSecurity>> webSecurityConfigurers){
    ....
    for(SecurityConfigurer<Filter,WebSecurity> webSecurityConfigurer:webSecurityConfigurers){
        this.webSecurity.apply(webSecurityConfigurer);
    }
    ....
}



        WebSecurityConfiguration配置类创建springSecurityFilterChain对象时会调用webSecurity对象的build()方法;最终调用到用户自定义配置子类中的configure(WebSecurity)方法和configure(HttpSecurity)方法

@Bean(name = "springSecurityFilterChain")
public Filter springSecurityFilterChain() throws Exception {
	...
	return this.webSecurity.build();
}

        调用关系如下:

        build() --> dobuild() --> init() --> init(WebSecurity) --> getHttp() --> configure(HttpSecurity) 

                                        --> configure() --> configure(WebSecurity)

核心类:

        WebSecurityConfiguration 

        spring 配置类

        核心方法setFilterChainProxySecurityConfigurer函数和springSecurityFilterChain函数参考上面流程介绍;

        WebSecurity  

        创建javax.servlet.Filter对象的SecurityBuilder类

        最终通过performBuild()函数创建FilterChainProxy(javax.servlet.Filter的子类)对象

        webSecurity 对象有一个重要的 securityFilterChainBuilders 属性,该属性存放HttpSecurity对象(在创建FilterChainProxy对象时,用于创建FilterChainProxy中的List<SecurityFilterChain>属性对象)

        HttpSecurity                

        创建DefaultSecurityFilterChain对象的SecurityBuilder

        核心代码:

        1.Customizer接口
                作用:传入SecurityConfigurer接口的对象,例如:CsrfConfigurer 对象;在自定义function函数中修改对象的配置属性,完成自定义
        2.apply函数
                作用:将ObjectPostProcessor对象 和 HttpSecurity对象传入具体的SecurityConfigurer 对象中;主要是为之后SecurityConfigurer执行disable 函数时可以调用HttpSecurity对象(完成对HttpSecurity对象的自定义操作)
        3.doBuild
                通过init函数和configure函数调用各个SecurityConfigurer的init和configure函数
    将不同的filter 添加HttpSecurity的filters属性中

                HttpSecurity对象通过performBuild函数,将filters添加到创建的DefaulSecurityFilterChain对象中
    ----------------------------------------------
                其中      

                init 主要初始化DefaultSecurityFilterChain对象RequestMatcher属性相关内容
                configure 主要初始化DefaultSecurityFilterChain对象List<Filter> 属性相关内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值