Bootstrap

深入理解SecurityConfigurer

目录

一、SecurityConfigurer

二、SecurityConfigurerAdapter

三、GlobalAuthenticationConfigurerAdapter

四、WebSecurityConfigurer

五、SecurityConfigurerAdapter

1.UserDetailsAwareConfigurer


一、SecurityConfigurer

  SecurityConfigurer 在 Spring Security 中是一个非常重要的角色。在前面的内容中曾经多次提到过, Spring Security 过滤器链中的每一个过滤器,都是通过 xxxConfigurer 来进行配置的,而这些 xxxConfigurer 实际上都是 SecurityConfigurer 的实现。所以我们也需要对 SecurityConfigurer 理解清楚.

//  O(DefaultSecurityFilterChain)  B(HttpSecurity)
public interface SecurityConfigurer<O, B extends SecurityBuilder<O>> {
​
    /**
     * Initialize the {@link SecurityBuilder}. Here only shared state should be created
     * and modified, but not properties on the {@link SecurityBuilder} used for building
     * the object. This ensures that the {@link #configure(SecurityBuilder)} method uses
     * the correct shared objects when building. Configurers should be applied here.
     * @param builder
     * @throws Exception
     */
    void init(B builder) throws Exception;
​
    /**
     * Configure the {@link SecurityBuilder} by setting the necessary properties on the
     * {@link SecurityBuilder}.
     * @param builder
     * @throws Exception
     */
    void configure(B builder) throws Exception;
​
}

在init方法和configure方法中的形参都是SecurityBuilder类型,而SecurityBuilder是用来构建过滤器链 的【DefaultSecurityFilterChainProxy】 SecurityConfigurer的实现当然很多。

image.png

具体的Configurer实现我们可以先不关注,我需要了解的SecurityConfigurer的核心实现有三个

image.png

二、SecurityConfigurerAdapter

  SecurityConfigurerAdapter 实现了 SecurityConfigurer 接口,我们所使用的大部分的xxxConfigurer 也都是 SecurityConfigurerAdapter 的子类。   SecurityConfigurerAdapter 在 SecurityConfigurer 的基础上,还扩展出来了几个非常好用的方法

image.png

  1. CompositeObjectPostProcessor () 首先一开始声明了一个 CompositeObjectPostProcessor 实例,CompositeObjectPostProcessor 是 ObjectPostProcessor 的一个实现,ObjectPostProcessor 本身是一个后置处理器,该后置处 理器默认有两个实现,AutowireBeanFactoryObjectPostProcessor 和 CompositeObjectPostProcessor。其中 AutowireBeanFactoryObjectPostProcessor 主要是利用 了

;