当前位置: 首页 > news >正文

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
http://www.lryc.cn/news/482954.html

相关文章:

  • 【JAVA】使用IDEA创建maven聚合项目
  • 猿创征文|Inscode桌面IDE:打造高效开发新体验
  • 概率论中的PMF、PDF和CDF
  • Vue 简单入手
  • Github配置ssh key原理及操作步骤
  • 大循环引起CPU负载过高
  • [Java]微服务治理
  • 深入解析C语言中的extern关键字:语法、工作原理与高级应用技巧
  • 元器件封装
  • 状态空间方程离散化(Matlab符号函数)卡尔曼
  • 软件设计师-计算机网络
  • SpringBoot操作Elasticsearch
  • 阿里云aliyun gradle安装包下载地址
  • 【设计模式】创建型设计模式-工厂模式的实现
  • 【分布式】CAP理论
  • 市域社会治理现代化解决方案-2
  • 谷歌浏览器的自动翻译功能如何开启
  • Linux设置socks代理
  • 【ACM出版】第四届信号处理与通信技术国际学术会议(SPCT 2024)
  • 蓝队技术学习
  • openpyxl处理Excel模板,带格式拷贝行和数据填入
  • 无法在带有 WHM/cPanel 的 Ubuntu 22.04 服务器上安装 PHP 7.x – 缺少软件包
  • 数据结构-递归函数的调用栈过程
  • 在 WPF 中,如何实现数据的双向绑定?
  • pyinstaller 打包 playwright -- 如何将浏览器打包到程序中
  • vue系列=状态管理=Pinia使用
  • [HarmonyOS]简单说一下鸿蒙架构
  • 【Python TensorFlow】进阶指南(续篇一)
  • 机器视觉和计算机视觉的区别
  • RDD 算子全面解析:从基础到进阶与面试要点