【Spring security】Note01-pig登录验证过程

🌸🌸 pig 登录验证 🌸🌸

一、大概执行顺序,便于理解

  • pig
    在这里插入图片描述
  • spring-security
    在这里插入图片描述

二、执行过程分析

  1. 请求拦截:
    • 当客户端发送请求时,Spring Security 的过滤器链会首先拦截该请求。过滤器链中的每个过滤器都会依次处理请求。
  2. SecurityContextHolder 初始化:
    • SecurityContextHolder 是一个静态容器,用于存储当前的安全上下文信息,包括当前的认证对象 Authentication。在请求开始时,SecurityContextHolder 通常是空的。
  3. 认证请求过滤:
    • 请求到达 UsernamePasswordAuthenticationFilter 或其他自定义认证过滤器。这个过滤器会捕获提交的用户名和密码,并创建一个 UsernamePasswordAuthenticationToken
      在这里插入图片描述
  4. AuthenticationManager 认证:
    • UsernamePasswordAuthenticationToken 会被传递给 AuthenticationManager 进行认证。AuthenticationManager 通常会委托给 ProviderManager 来处理。
    • ProviderManager 会迭代一组 AuthenticationProvider 实现来进行实际的认证。最常见的实现是 DaoAuthenticationProvider,它会使用 UserDetailsService 来加载用户详细信息并进行验证。
  5. UserDetailsService 加载用户信息:
    • UserDetailsService 从数据库或其他持久化存储中加载用户信息,并返回一个 UserDetails 对象。这个对象包含了用户名、密码、权限等信息。
    • DaoAuthenticationProvider 然后会比较提交的密码和 UserDetails 中存储的密码(通常会进行加密或哈希比较)。
  6. 成功认证:
    • 如果认证成功,AuthenticationManager 会返回一个已认证的 Authentication 对象,并将其存储在 SecurityContextHolder 中。
    • UsernamePasswordAuthenticationFilter 处理成功后,会将认证信息存储到 SecurityContext 中,并继续处理请求链。
    • 客户端通常会收到一个 JWT 或其他形式的认证令牌,用于后续请求的认证。
  7. 失败处理:
    • 如果认证失败,AuthenticationManager 会抛出一个 AuthenticationException
    • UsernamePasswordAuthenticationFilter 会捕获异常并调用配置的 AuthenticationFailureHandler 来处理认证失败的情况,通常返回 401 未授权响应。
  8. 访问受保护资源:
    • 在后续请求中,客户端会使用之前收到的认证令牌。
    • SecurityContextPersistenceFilter 会检查 SecurityContextHolder,并确保上下文中包含认证信息。
    • AbstractSecurityInterceptor 会拦截受保护的资源请求,检查用户的权限。如果用户有权限访问资源,请求会被允许通过;否则,将返回 403 禁止访问响应。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/328709.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构与算法—顺序表

目录 一、线性表 二、顺序表概念 三、实现顺序表 1、声明结构体 2、初始化 3、打印数据 4、销毁 5、尾插&头插 尾插 判断是否扩容 头插 6、尾删&头删 尾删 头删 7、 指定位置插入元素 8、 删除指定位置元素 9、 查找指定元素位置 10、修改指定位置元…

angular13 自定义组件全项目都可用 自存

1.定义自定义组件 使用命令创建一个组件 但删除它在你的module里的声明,因为会报错只能引用一次 在本组件中创建一个module文件,引入刚才的组件component.ts import { NgModule } from angular/core; import { CommonModule } from angular/common; im…

简化路径[中等]

优质博文:IT-BLOG-CN 一、题目 给你一个字符串path,表示指向某一文件或目录的Unix风格 绝对路径 (以/开头),请你将其转化为更加简洁的规范路径。在Unix风格的文件系统中,一个点.表示当前目录本身&#x…

vue3 自定义组件

在项目中,我们会遇到一些没有现成的组件,那这个时候我们就需要自己去写一个满足我们需求的组件。 比如,我需要一个上下排布,上面显示标题,下面显示内容的组件。封装完成后方便复用。 1、布局组件 我定义一个上下结构的…

2024生日快乐祝福HTML源码

源码介绍 2024生日快乐祝福HTML源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面, 源码截图 源码下载 2024生日快乐祝福HTML源码

Gradio 案例——将 dicom 文件转为 nii文件

文章目录 Gradio 案例——将 dicom 文件转为 nii文件界面截图依赖安装项目目录结构代码 Gradio 案例——将 dicom 文件转为 nii文件 利用 SimpleITK 库,将 dicom 文件转为 nii文件更完整、丰富的示例项目见 GitHub - AlionSSS/dcm2niix-webui: The web UI for dcm2…

一种请求头引起的跨域问题记录(statusCode = 400/CORS)

问题表象 问题描述 当我们需要在接口的headers中添加一个自定义的变量的时候,前端的处理是直接在拦截器或者是接口配置的地方直接进行写,比如下面的这段比较基础的写法: $http({method: "post",url:constants.backend.SERVER_LOGIN…

selenium发展史

Selenium Core 2004 年,Thoughtworks 的工程师 Jason Huggins 正在负责一个 Web 应用的测试工作,由于这个项目需要频繁回归,这导致他不得不每天做着重复且低效的工作。为了解决这个困境,Jason 开发了一个运行在 JavaScript 沙箱中…

React框架-Next 学习-1

创建一个 Next.js 应用,node版本要高,16.5以上 npm淘宝镜像切为https://registry.npmmirror.com npm config set registry https://registry.npmmirror.com npx create-next-applatest//安装后 使用npm run dev 启动 Next.js 是围绕着 页面(pages&am…

我21岁玩“撸货”,被骗1000多万

最近,撸货业界内发生了一些颇受瞩目的事件。 在郑州,数码档口下面抢手团长跑路失联,涉及金额几百万,在南京,一家知名的电商平台下的收货站点突然失联,涉及金额高达一千多万,令众多交易者震惊不已…

回归预测 | Matlab实现GA-LSSVM遗传算法优化最小二乘支持向量机多输入单输出回归预测

回归预测 | Matlab实现GA-LSSVM遗传算法优化最小二乘支持向量机多输入单输出回归预测 目录 回归预测 | Matlab实现GA-LSSVM遗传算法优化最小二乘支持向量机多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 Matlab实现GA-LSSVM遗传算法优化最小…

基于 Spring Boot 博客系统开发(十)

基于 Spring Boot 博客系统开发(十) 本系统是简易的个人博客系统开发,为了更加熟练地掌握 SprIng Boot 框架及相关技术的使用。🌿🌿🌿 基于 Spring Boot 博客系统开发(九)&#x1f…

【考研数学】张宇《1000题》强化阶段正确率多少算合格?

张宇1000题真的很练人心态.... 基础不好,建议别碰1000题 基础好,1000题建议在两个月以内刷完 如果自己本身在基础阶段学的比较水,自己的薄弱点刷了一小部分题没有针对性完全解决,转身去刷1000题就会发现,会的题目刷…

算术平均数

算术平均数(average)是一组数据相加后除以数据的个数而得到的结果,是度量数据水平的常用统计量,在参数估计和假设检验中经常用到。比如:用职工平均工资来衡量职工工资的一般水平,用平均体重来观察某一人群体…

通信指挥类装备(多链路聚合设备)-应急通信指挥解决方案

现场通信指挥系统是一种功能全面的便携式音视频融合指挥通信平台,可实现现场应急救援指挥、多种通信手段融合、现场通信组网等功能,是现场指挥系统的延伸。 多链路聚合设备,是一款通信指挥类装备,具有 4G/5G,专网&…

YOLOv8训练流程-原理解析[目标检测理论篇]

关于YOLOv8的主干网络在YOLOv8网络结构介绍-CSDN博客介绍了,为了更好地学习本章内容,建议先去看预测流程的原理分析YOLOv8原理解析[目标检测理论篇]-CSDN博客,再次把YOLOv8网络结构图放在这里,方便随时查看。 ​ 1.前言 YOLOv8训练…

《ESP8266通信指南》17-结尾篇(完结撒花)

《ESP8266通信指南》16-MQTT收发通信-完整代码-(Lua烧录代码的深度思考与串口拦截)-CSDN博客 《ESP8266通信指南》系列的第十六篇,专注于MQTT收发通信的完整代码以及深度思考与串口拦截。本小节首先列出了往期内容,然后提出了本节…

哈希表的理解和实现

目录 1. 哈希的概念 (是什么) 2. 实现哈希的两种方式 (哈希函数) 2.1. 直接定址法 2.2. 除留余数法 2.2.1. 哈希冲突 3. 补充知识 3.1. 负载因子 3.2. 线性探测和二次探测 4. 闭散列实现哈希表 (开放定址法) 4.1. 开放定址法的实现框架 4.2. Xq::hash_table::insert…

今天遇到一个GPT解决不了的问题

问题描述 你好,postman的一个post请求,编辑器里面放了一个很长的json数据,报Tokenization is skipped for long lines for performance reasons. This can be configured via editor.maxTokenizationLineLength.,但是同样的数据&a…

家用充电桩远程监控安全管理系统解决方案

家用充电桩远程监控安全管理系统解决方案 在当今电动汽车日益普及的背景下,家用充电桩的安全管理成为了广大车主关注的重点问题。为了实现对充电桩的高效、精准、远程监控,一套完善的家用充电桩远程监控安全管理系统解决方案应运而生。本方案旨在通过先…