spring security filter顺序 在哪里完成的

根据查找,发现入口是在 IOC容器 初始化 Bean的时候开始的

说的再具体一点是 IOC在初始化所有的单例Bean的时候。

org.springframework.context.support.AbstractApplicationContext.refresh()方法, finishBeanFactoryInitialization 这个方法

org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.springSecurityFilterChain() 

现在回过头来看下  WebSecurityConfiguration  这个类

/// 普通的一个配置类
@Configuration(proxyBeanMethods = false)
public class WebSecurityConfiguration implements ImportAware, BeanClassLoaderAware {


   普通的一个Bean
	@Bean(name = AbstractSecurityWebApplicationInitializer.DEFAULT_FILTER_NAME)
	public Filter springSecurityFilterChain() throws Exception {
		boolean hasConfigurers = this.webSecurityConfigurers != null && !this.webSecurityConfigurers.isEmpty();
		boolean hasFilterChain = !this.securityFilterChains.isEmpty();
		Assert.state(!(hasConfigurers && hasFilterChain),
				"Found WebSecurityConfigurerAdapter as well as SecurityFilterChain. Please select just one.");
		if (!hasConfigurers && !hasFilterChain) {
			WebSecurityConfigurerAdapter adapter = this.objectObjectPostProcessor
					.postProcess(new WebSecurityConfigurerAdapter() {
					});
			this.webSecurity.apply(adapter);
		}
		for (SecurityFilterChain securityFilterChain : this.securityFilterChains) {
			this.webSecurity.addSecurityFilterChainBuilder(() -> securityFilterChain);
			for (Filter filter : securityFilterChain.getFilters()) {
				if (filter instanceof FilterSecurityInterceptor) {
					this.webSecurity.securityInterceptor((FilterSecurityInterceptor) filter);
					break;
				}
			}
		}
		for (WebSecurityCustomizer customizer : this.webSecurityCustomizers) {
			customizer.customize(this.webSecurity);
		}

        / 最重要的看这里
		return this.webSecurity.build();   看这里
	}


}
}

 再往就是一堆调用,最后发现在落在了

org.springframework.security.config.annotation.web.builders.FilterComparator 这具类里的构造函数。

 WebSecurity  设置 HttpSecurity,HttpSecurity 类加载的时候,成员属性初始化 new FilterComparator () ,最后 FilterComparator 这个类的构造函数触发了。

 

 org.springframework.security.config.annotation.web.builders.HttpSecurity

org.springframework.security.config.annotation.web.builders.WebSecurity

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值