SpringSecurity源码中核心类

SpringSecurity源码

第一部分 核心类

  • SecurityBuilder
  • HttpSecurity
  • WebSecurity
  • SecurityFilterChain
  • FilterChainProxy

SecurityBuilder是安全构架器,HttpSecurity和WebSecurity都是SecurityBuilder的实现类,HttpSecurity通过build()构建了一个SecurityFilterChain调用链。 WebSecurity构建了一个FilterChainProxy,他是一个Filter过滤器,其内部维护了一个filterChains(SecurityFilterChain的链表),doFilter执行时,利用装饰器模式+责任链模式先调用SecurityFilterChain,再调用原生chain.doFilter(req, resp)继续执行

第二部分核心类

  • HttpSecurity内容
  • SecurityConfigurer
  • AbstractConfiguredSecurityBuilder

SecurityBuilder用来构建安全对象,安全对象包括:ttpSecurity、FilterChainProxy、AuthenticationManager、SecurityConfigurer用来配置安全对象构建器(SecurityBuilder),典型的有

FormLoginConfigurer、CsrfConfigurer

第三部分

  • Authentication

  • AuthenticationManage

  • AuthenticationManageBuilder

  • ProviderManager

  • AuthenticationProvider

    其中Authentication为认证信息,AuthenticationManage可以用来认证,其中有一个重要的方法 Authentication authenticate(Authentication authentication),AuthenticationManagerBuilder用来构建

    AuthenticationManager的,即ProviderManager,是一个重要的ProviderManager 实现类。即ProviderManager中存储了AuthenticationProvider集合,认证的时候 先查看是否support,是的话,开始认证

第四部分

  • UserDetailsService
  • DaoAuthenticationProvider
  • AbstractUserDetailsAuthenticationProvider
  • UsernamePasswordAuthenticationFilter
  • FormLoginConfigurer

用户名密码登录所使用到的类,UserDetailsService用来加载用户信息的,DaoAuthenticationProvider是一个provider(结合UserDetailsService进行加载用户信息),用来做认证的,AbstractUserDetailsAuthenticationProvider是DaoAuthenticationprovider的父类。UsernamePasswordAuthenticationFilter是一个过滤器,生成一个认证对象,在通过providerManager来进行认证,核心就是利用DaoAuthenticationProvider来进行认证。FormLoginConfigurer用于配置用户名密码相关信息,通过http来进行配置。

第五部分

  • SecurityContext
  • SecurityContextHolder
  • SecurityContextPersistenceFilter
  • SecurityContextRepository
  • SecurityContextConfigurer
相关推荐
用户0942485680314 小时前
第22章:Redis 持久化 RDB 与 AOF:数据不丢的底线
redis·架构·源码
用户094248568032 天前
第19章:库存扣减与秒杀系统:Redis 扛峰值流量
redis·架构·源码
用户8351414049493 天前
const的四种位置,含义完全不同
嵌入式·源码
养军博客4 天前
Spring Security 4.x / 5.x / 6.x 配置全对比:前后端不分离与前后端分离
java·后端·spring·springsecurity
金銀銅鐵6 天前
[Java] 用 CLI 展示 EnumMap 增删键值对时的内部变化
java·源码·ai编程
源码集结号7 天前
云诊所门诊系统源码,基于SpringBoot+Vue.js架构,支持多租户设计与Docker容器化部署
java·spring boot·源码·医院信息系统·门诊系统·诊所系统
养军博客8 天前
spirngSecurity 鉴权教程02
java·springsecurity
Flynt11 天前
PHP 9.2 分 RCE 的补丁比公告早公开 3 天,我读完 389 个文件的 diff,也把"死在代码之前"跑了出来
安全·php·源码
用户0942485680311 天前
第8章:Redis Bitmap 与 BitField 实战:签到、活跃用户与状态压缩
redis·架构·源码
用户0942485680312 天前
第7章:Redis有序集合 ZSet 实战:排行榜与延时任务
redis·架构·源码