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.xdnf.cn/news/12378.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

网络与通信实验一 网络协议分析

Wireshark的安装 https://www.wireshark.org/(下载链接) 具体安装步骤参考 安装步骤 点击即可自动跳转 安装后打开 输入ipconfig 选择ipv4网卡存在的设备(我的电脑选择WiFi) 过滤条件选择 icmp cmd下输入 ping www.baidu.com…

电脑网络丢包怎么排查优化

上网已经成为必不可少的一部分,无论是看视频、玩游戏还是办公,网络的稳定性直接影响到我们的体验。然而有时候会遇到一些问题,比如网页加载慢、视频卡顿、游戏掉线等。这些问题的背后,往往是因为网络丢包。 网络丢包检测工具分享 什么是网络丢包? 网络丢包,简单来说,就是…

从0开始学习Linux——进程管理

往期目录: 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 从0开始学习Linux——Yum工具 从0开始学习Linux——远程连接工具 从0开始学习Linux——文件目录 从0开始学习Linux——网络配置 从0开…

QT6.5+qt-quick+qml+cmake的Item布局学习

Item 是一个基础元素,它本身不会渲染任何东西,也不会提供一个窗口来显示其内容。Window 是一个可以显示内容的顶级元素,它通常会包含一个或多个子元素来构建用户界面。Item是全部QML可视化对象的根,所有可视化类型都由该类型派生出…

Cameralink转MIPI,Cameralink视频识别分析

CameraLink视频输入转MIPI极简方案,可直接输入到处理芯片中进行视频目标识别与跟踪

【算法】【优选算法】二分查找算法(下)

目录 一、852.⼭脉数组的峰顶索引1.1 二分查找1.2 暴力枚举 二、162.寻找峰值2.1 二分查找2.2 暴力枚举 三、153.寻找旋转排序数组中的最⼩值3.1 二分查找3.2 暴力枚举 四、LCR 173.点名4.1 二分查找4.2 哈希表4.3 暴力枚举4.4 位运算4.5 数学(求和) 一、…

递归函数学习 part1

一&#xff0c;初始递归&#xff1a;阶乘 1&#xff0c;原理 n的阶乘等于n乘以n-1的阶乘&#xff0c;而0的阶乘等于1. 2&#xff0c;代码展示 #include <iostream> using namespace std;int fact(int); int main() {cout<<fact(5);return 0; }int fact(int n) …

开源 - Ideal库 -获取特殊时间扩展方法(四)

书接上回&#xff0c;我们继续来分享一些关于特殊时间获取的常用扩展方法。 01、获取当前日期所在月的第一个指定星期几 该方法和前面介绍的获取当前日期所在周的第一天&#xff08;周一&#xff09;核心思想是一样的&#xff0c;只是把求周一改成求周几而已&#xff0c;当然其…

Python练习18

Python日常练习 题目&#xff1a; 请编fun函数&#xff0c;求44整型数组的主对角线元素的和。 说明&#xff1a; 如下图所示为一个44整型数组 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 测试用例&#xff1a; 1 2 3 4 5 6 7 8…

智防未戴帽,安全无死角

在追求高效与安全并重的现代工业环境中&#xff0c;员工佩戴安全帽作为最基本的防护措施&#xff0c;其重要性不言而喻。为了有效杜绝员工未佩戴安全帽的现象&#xff0c;我们提出了一套以AI视频分析与安全教育培训系统为核心的综合解决方案&#xff0c;旨在通过智能化手段与系…

C++ 优先算法 —— 四数之和(双指针)

目录 题目&#xff1a;四数之和 1. 题目解析 2. 算法原理 Ⅰ. 暴力枚举 Ⅱ. 双指针算法 不漏的处理&#xff1a; 去重处理&#xff1a; 3. 代码实现 Ⅰ. 暴力枚举 Ⅱ. 双指针算法 题目&#xff1a;四数之和 1. 题目解析 题目截图&#xff1a; 这道题与三数之和&am…

[vulnhub] Corrosion: 2

https://www.vulnhub.com/entry/corrosion-2,745/ 提示&#xff1a;枚举才是神 主机发现端口扫描 使用nmap扫描网段类存活主机 因为靶机是我最后添加的&#xff0c;所以靶机IP是6 &#xff0c;kali是10 nmap -sP 192.168.56.0/24 Starting Nmap 7.94SVN ( https://nmap.org ) …

前端请求后端php接口跨域 cors问题

只需要后端在网站的入口文件 一般都是 index.php 加上 这几行代码就可以了 具体的参数可以根据需要去修改 header("Access-Control-Allow-Origin: *"); header(Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS); header(Access-Control-Allow-Heade…

【星闪EBM-H63开发板】AT固件的配置与测试

引言 前面的博客已经介绍了【星闪EBM-H63开发板】小熊派固件中心的使用_bearpi-bm h63固件烧录工具-CSDN博客和【星闪EBM-H63开发板】固件的烧录-CSDN博客&#xff0c;今天来测试一下另一种固件&#xff0c;也就是AT固件。有关AT固件的介绍参见&#xff1a;【星闪EBM-H63开发板…

Linux基础(十四)——BASH

BASH 1.BASH定义2.shell的种类3.bash的功能3.1 命令记录功能3.2 命令补全功能3.3 命令别名设置3.4 工作控制、 前景背景控制3.5 程序化脚本&#xff1a; &#xff08; shell scripts&#xff09;3.6 万用字符 4.bash的内置命令5.shell的变量功能5.1 变量的取用5.2 新建变量5.3 …

【前端学习笔记】JavaScript学习一【变量与数据类型】

一、变量 变量是计算机中用来存储数据的“容器”&#xff0c;通俗的理解变量就是使用【某个符号】来代表【某个具体的数值】&#xff08;数据&#xff09; 声明&#xff1a;声明(定义)变量有两部分构成&#xff1a;关键字 变量名 JavaScript 使用关键字 let 和 var 来声明&am…

使用Git工具在GitHub的仓库中上传文件夹(超详细)

如何使用Git工具在GitHub的仓库中上传文件夹&#xff1f; 如果觉得博主写的还可以&#xff0c;点赞收藏关注噢~ 第一步&#xff1a;拥有一个本地的仓库 可以fork别人的仓库或者自己新创建 fork别人的仓库 或者自己创建一个仓库 按照要求填写完成后&#xff0c;点击按钮创建…

Linux kernel 堆溢出利用方法(二)

前言 本文我们通过我们的老朋友heap_bof来讲解Linux kernel中off-by-null的利用手法。在通过讲解另一道相对来说比较困难的kernel off-by-null docker escape来深入了解这种漏洞的利用手法。&#xff08;没了解过docker逃逸的朋友也可以看懂&#xff0c;毕竟有了root权限后&a…

福昕阅读器高级版解决文件上传IEEE PDF eXpress字体未嵌入

文件上传IEEE PDF eXpress字体未嵌入问题 Errors: Font Arial-BoldMT, Arial-ItalicMT, ArialMT is not embedded (93x on pages 2-3,5) 因为没安装adobe&#xff0c;尝试使用福昕阅读器高级版解决&#xff08;学校统一买的&#xff0c;不知道普通版行不行&#xff09; 找到潜…

人工智能在智能家居的应用

AI 在智能家居场景中&#xff0c;一方面将进一步推动家居生活产品的智能化&#xff0c;包 括照明系统、音箱系统、能源管理系统、安防系统等&#xff0c;实现家居产品从感知到认知再到决策的 发展&#xff1b;另一方面在于智能家居系统的建立&#xff0c;搭载人工智能的多款产品…