Spring Security初始化流程整体上来说理解起来并不难,但是这里涉及许多零碎的知识点, 把这些零碎的知识点搞懂了,再来梳理初始化流程就会容易很多。因此,这里先介绍一下SpringSecurity中一些常见的关键组件,在理解这些组件的基础上,再来分析初始化流程,就能加深对其的理解。
1.1 ObjectPostProcessor
Spring Security中所有需要构建的对象都可以通过SecurityBuilder来实现,默认的过滤器 链、代理过滤器AuthenticationManager 等,都可以通过 SecurityBuilder来构建。SecurityBuilder的实现类如图4-2所示。
图 4-2
SecurityBuilder:
我们先来看SecurityBuilder的源码:
public interface SecurityBuilder<O> {
O build() throws Exception;
}
复制代码
由上述代码可以看到,SecurityBuilder中只有一个build方法,就是对象构建方法。build 方法的返回值,就是具体构建的对象泛型O,也就是说不同的SecurityBuilder将来会构建出不同的对象。
HttpSecurityBuiIder:
HttpSecurityBuilder是用来构建 HttpSecurity对象的,HttpSecurityBuilder 的定义如下:
[code]public interface HttpSecurityBuilder extends SecurityBuilder { C getConfigurer( Class clazz); C removeConfigurer( Class clazz); void setSharedObject(Class sharedType, C object); C getSharedObject(Class sharedType); H authenticationProvider(AuthenticationProvider authenticationProvider); H userDetailsService(UserDetailsService userDetailsService) throws Exception; H addFilterAfter(Filter filter, Class