首页 > 其他分享 >SpringSecurity之WebSecurity和HttpSecurity

SpringSecurity之WebSecurity和HttpSecurity

时间:2023-04-09 21:13:08浏览次数:49  
标签:WebSecurity AbstractConfiguredSecurityBuilder SecurityBuilder buildState SpringS

SpringSecurity启动过程中有两个重要的类。分别是WebSecurity和HttpSecurity。

 

看看WebSecurity的定义:

public final class WebSecurity extends AbstractConfiguredSecurityBuilder<Filter, WebSecurity> implements SecurityBuilder<Filter>, ApplicationContextAware, ServletContextAware

SecurityBuilder用于创建对象。WebSecurity的定义中SecurityBuilder的参数是Filter,也就是WebSecurity创建FilterChainProxy对象。

 

WebSecurity的继承结构图:

 

AbstractSecurityBuilder实现了SecurityBuilder接口,重写了build() 方法:

	@Override
public final O build() throws Exception {
	if (this.building.compareAndSet(false, true)) {
		this.object = doBuild();
		return this.object;
	}
	throw new AlreadyBuiltException("This object has already been built");
}

通过AtomicBoolean参数控制只能调用一次build()。

 

AbstractConfiguredSecurityBuilder继承了AbstractSecurityBuilder。重写了doBuild()方法:

	@Override
protected final O doBuild() throws Exception {
	synchronized (this.configurers) {
		this.buildState = BuildState.INITIALIZING;
		beforeInit();
		init();
		this.buildState = BuildState.CONFIGURING;
		beforeConfigure();
		configure();
		this.buildState = BuildState.BUILDING;
		O result = performBuild();
		this.buildState = BuildState.BUILT;
		return result;
	}
}

定义了构建的生命周期。AbstractConfiguredSecurityBuilder还增加了一些操作SecurityConfigurer的方法。比如getConfigurer,removeConfigurer,add等。

 

再来看看HttpSecurity的定义:

HttpSecurity extends AbstractConfiguredSecurityBuilder<DefaultSecurityFilterChain, HttpSecurity> implements SecurityBuilder<DefaultSecurityFilterChain>, HttpSecurityBuilder<HttpSecurity>

实现了SecurityBuilder接口,上面定义中的参数是DefaultSecurityFilterChain,HttpSecurity是配置DefaultSecurityFilterChain。

 

HttpSecurity类结构图如下:

 

HttpSecurityBuilder继承了SecurityBuilder接口,增加了操作SecurityConfigurer的方法,操作sharedObject的方法,操作Filter的方法。

标签:WebSecurity,AbstractConfiguredSecurityBuilder,SecurityBuilder,buildState,SpringS
From: https://www.cnblogs.com/shigongp/p/17301023.html

相关文章

  • SpringSecurity源码之WebSecurity构建FilterChainProxy
    主要参考了https://mp.weixin.qq.com/s/D0weIKPto4lcuwl9DQpmvQ。SpringSecurity版本是2.7.9。将SpringBoot和SpringSecurity结合使用,SpringSecurity自动配置类是SecurityAutoConfiguration.class。 @AutoConfiguration@ConditionalOnClass({DefaultAuthenticationEventPubli......
  • SpringSecurity体系结构
    我是通过松哥的博客学习SpringSecurity的,地址是http://itboyhub.com/2021/01/26/spring-security-guide/。对SpringSecurity的使用有了初步的认识。并根据松哥的博客跟了源码,但是每个人的思路不一样,看完之后还有点模糊。对其中的一些用法不够深刻。想了下还是根据自己的思路记录下......
  • SpringSecurity实现权限系统设计
    RBAC权限分析RBAC全称为基于角色的权限控制,本段将会从什么是RBAC,模型分类,什么是权限,用户组的使用,实例分析等几个方面阐述RBAC思维导图绘制思维导图如下什么是RBACRBAC全称为用户角色权限控制,通过角色关联用户,角色关联权限,这种方式,间阶的赋予用户的权限,如下图所示对于通常的系统而......
  • 创建SpringSecurity项目
    一.搭建SpringBoot开发环境我们的SpringSecurity系列教程会基于SpringBoot环境,并且以案例迭代的方式进行开发,所以为了方便后续案例的编写,我们先提前搭建一个SpringBoot环境的Web项目。1.创建SpringBoot项目如各位对SpringBoot基础不熟悉,请参考本人的SpringBoot系列教程:blo......
  • 项目一众筹网07_01_SpringSecurity框架简介和用法、SpringSecurity负责的是 权限验证
    项目一众筹网07_01_SpringSecurity文章目录项目一众筹网07_01_SpringSecurity01简介SpringSecurity负责的是权限验证02-SpringSecurity简介03-Spring的注解模式maven引入Spring环境04-准备测试环境05-加入SpringSecurity环境06-实验1-放行首页和静态资源(下一篇)01简介现在主流的权......
  • 项目一众筹网09_00_SpringSecurity
    系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章Python机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这......
  • 初识springsecurity
                                        ......
  • SpringSecurity授权原理
    在第二部分中我们讲解的都是用户认证,不管是用户名密码,还是图形验证码等,最终的目的都是一个:让系统知道你到底是谁在访问你的系统,解决的问题是,你是谁?这部分主要讲......
  • SpringSecurity
    SpringSecurity框架简介1.1概要Spring是非常流行和成功的Java应用开发框架,SpringSecurity正是Spring家族中的成员。SpringSecurity基于Spring框架,提供......
  • 申报发布的项目是用SpringSecurity-OAuth2模式登录认证的
    SpringSecurity-OAuth2万文详解https://blog.csdn.net/weixin_68320784/article/details/124103484清晰搞懂SpringSecurity的登录认证https://blog.csdn.net/Aqting/ar......