赞
踩
在配置文件中通过 security:http 等标签来定义了认证需要的相关信息
在SpringBoot项目中,脱离了xml配置文件的方式,在SpringSecurity中提供了HttpSecurity等工具类,这里HttpSecurity就等同于在配置文件中定义的http标签。
通过代码结果来看和配置文件的效果是一样的。基于配置文件的方式是通过标签对应的handler来解析处理的,HttpSecurity这块是如何处理的呢?接下来详细分析下。
可以看出HttpSecurity的类图结构相对比较简单,继承了一个父类,实现了两个接口
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接口时指定的泛型可以看出创建的具体对象是什么类型。
可以看出SecurityBuilder会通过build方法创建一个DefaultSecurityFilterChain对象。也就是拦截请求的那个默认的过滤器链对象。
然后进入到doBuild()方法,会进入到AbstractConfiguredSecurityBuilder中的方法
- @Override
- protected final O doBuild() t
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。