SpringSecurity的XML文件配置

在配置文件中通过 security:http 等标签来定义了认证需要的相关信息

【第四篇】SpringSecurity的HttpSecurity详解-LMLPHP

SpringSecurity的HttpSecurity配置

在SpringBoot项目中,脱离了xml配置文件的方式,在SpringSecurity中提供了HttpSecurity等工具类,这里HttpSecurity就等同于在配置文件中定义的http标签。

【第四篇】SpringSecurity的HttpSecurity详解-LMLPHP

  通过代码结果来看和配置文件的效果是一样的。基于配置文件的方式是通过标签对应的handler来解析处理的,HttpSecurity这块是如何处理的呢?接下来详细分析下。

HttpSecurity的类图结构

【第四篇】SpringSecurity的HttpSecurity详解-LMLPHP

  可以看出HttpSecurity的类图结构相对比较简单,继承了一个父类,实现了两个接口

1.SecurityBuilder接口

  SecurityBuilder接口通过字面含义可以发现这是一个创建对象的工具类。

public interface SecurityBuilder<O> {

	/**
	 * Builds the object and returns it or null.
	 * @return the Object to be built or null if the implementation allows it.
	 * @throws Exception if an error occurred when building the Object
	 */
	O build() throws Exception;

}

通过源码可以看到在SecurityBuilder中提供了一个build()方法。在接口名称处声明了一个泛型,而build()方法返回的正好是这个泛型的对象,也就是SecurityBuilder会创建指定类型的对象。结合HttpSecurity中实现SecurityBuilder接口时指定的泛型可以看出创建的具体对象是什么类型。

【第四篇】SpringSecurity的HttpSecurity详解-LMLPHP

  可以看出SecurityBuilder会通过build方法创建一个DefaultSecurityFilterChain对象。也就是拦截请求的那个默认的过滤器链对象。

【第四篇】SpringSecurity的HttpSecurity详解-LMLPHP

然后进入到doBuild()方法,会进入到AbstractConfiguredSecurityBuilder中的方法

@Override
	protected final O doBuild() t
06-13 23:49