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

🌸🌸 pig 登录验证 🌸🌸

pig后端源码

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

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

二、配置过滤器

  • 配置SecurityFilterChain
    在这里插入图片描述

三、执行过程分析

  1. 请求拦截:

    • 当客户端发送请求时,Spring Security 的过滤器链会首先拦截该请求。过滤器链中的每个过滤器都会依次处理请求。
      在这里插入图片描述
  2. SecurityContextHolder 初始化:

    • SecurityContextHolder 是一个静态容器,用于存储当前的安全上下文信息,包括当前的认证对象 Authentication。在请求开始时,SecurityContextHolder 通常是空的。
  3. 认证请求过滤:

    • 请求到达 UsernamePasswordAuthenticationFilter 或其他自定义认证过滤器。这个过滤器会捕获提交的用户名和密码,并准备将request转换为一个 UsernamePasswordAuthenticationToken
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  4. 🌸🌸 AuthenticationManager 认证: 🌸🌸

    • 这里是最重要的认证授权部分,使用AuthenticationProviderAuthenticationConverter组装token
    • UsernamePasswordAuthenticationToken 会被传递给 AuthenticationManager 进行认证。AuthenticationManager 通常会委托给 ProviderManager 来处理。
    • ProviderManager 会迭代一组 AuthenticationProvider 实现来进行实际的认证。最常见的实现是 DaoAuthenticationProvider,它会使用 UserDetailsService 来加载用户详细信息并进行验证。
      在这里插入图片描述
      在这里插入图片描述
  • 自定义模式认证转换器-密码认证转换器
    • OAuth2ResourceOwnerBaseAuthenticationConverter-OAuth2ResourceOwnerPasswordAuthenticationConverter
    • 通过checkParams()support()buildToken()request转换为自定义的token:Authentication,如:OAuth2ResourceOwnerPasswordAuthenticationToken
      在这里插入图片描述
  • 自定义授权-处理用户名密码授权
    • OAuth2ResourceOwnerBaseAuthenticationProvider-OAuth2ResourceOwnerPasswordAuthenticationProvider
    • AuthenticationProvider拿到转换的token,使用AuthenticationManager进行验证
      在这里插入图片描述
  • 自定义授权模式抽象-密码授权token信息
    在这里插入图片描述
  1. UserDetailsService 加载用户信息:

    • UserDetailsService 从数据库或其他持久化存储中加载用户信息,并返回一个 UserDetails 对象。这个对象包含了用户名、密码、权限等信息。
      • 这里使用PigUserDetailsService extends UserDetailsService
    • DaoAuthenticationProvider 然后会比较提交的密码和 UserDetails 中存储的密码(通常会进行加密或哈希比较)。
      • 这里使用 PigDaoAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider,重载了一些方法,如additionalAuthenticationChecks()自定义密码验证,retrieveUser()获取人员,createSuccessAuthentication()成功后创建Authentication
        • 父级的AbstractUserDetailsAuthenticationProvider implements AuthenticationProvider
          在这里插入图片描述
          在这里插入图片描述
          在这里插入图片描述
  2. 成功认证:

    • 如果认证成功,AuthenticationManager 会返回一个已认证的 Authentication 对象,并将其存储在 SecurityContextHolder 中。
    • 此处构建OAuth2AccessToken,OAuth2RefreshToken,详情查看这篇文章:token令牌生成(generate)过程
    • UsernamePasswordAuthenticationFilter 处理成功后,会将认证信息存储到 SecurityContext 中,并继续处理请求链。
    • 客户端通常会收到一个 token 或其他形式的认证令牌,用于后续请求的认证。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
  3. 失败处理:

    • 如果认证失败,AuthenticationManager 会抛出一个 AuthenticationException
    • UsernamePasswordAuthenticationFilter 会捕获异常并调用配置的 AuthenticationFailureHandler 来处理认证失败的情况,通常返回 401 未授权响应。
      在这里插入图片描述
  4. 访问受保护资源:

    • 在后续请求中,客户端会使用之前收到的认证令牌。
    • SecurityContextPersistenceFilter 会检查 SecurityContextHolder,并确保上下文中包含认证信息。
    • AbstractSecurityInterceptor 会拦截受保护的资源请求,检查用户的权限。如果用户有权限访问资源,请求会被允许通过;否则,将返回 403 禁止访问响应。

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

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

相关文章

Kubernetes——Pod详解

目录 一、Pod基础概念 1.概念 2.使用方式 3.Pause容器 3.1网络 3.2存储 4.Pod容器分类 4.1自主式Pod 4.2控制器管理的Pod 二、Pod的分类 1.基础容器(infrastructure container) 2.初始化容器(initcontainers) 2.1Ini…

CR80清洁卡都能用在什么地方?

CR80清洁卡(也被称为ISO 7810 ID-1清洁卡)的规格确实使其在各种需要读取磁条或接触式智能卡的设备中都有广泛的用途。这些设备包括但不限于: ATM自动终端机:当ATM机的磁条读卡器出现故障或读卡不灵敏时,可以使用CR80清…

Python 渗透测试:MySQL 数据库 弱密码测试.(3306 端口)

什么是 MySQL 数据库 MySQL 是一种开源的关系型数据库管理系统(RDBMS)。它是目前世界上最流行的数据库之一,被广泛应用于各种类型的网站和应用程序中。MySQL 数据库爆破是一种非法和危险的黑客攻击手段。它指的是通过暴力猜测密码的方式,试图获取未授权访问 MySQL 数据库的行为…

【qt】下拉列表组件

下拉列表组件 一.Combo Box1.可以直接双击编辑下拉内容2.代码初始化下拉内容3.一次性添加多个下拉内容4.下拉框手动编辑5.下拉内容添加附加值6.下拉添加图标7.获取下拉值 二.总结 一.Combo Box 还是老样子,咱们边做边练 目标图: 1.可以直接双击编辑下…

存储+调优:存储-Cloud

存储调优:存储-Cloud Master Server 配置: IP192.168.1.254 useradd mfs tar zxf mfs-1.6.11.tar.gz.gz cd mfs-1.6.11 ./configure --prefix/usr --sysconfdir/etc --localstatedir/var/lib --with-default-usermfs --with-default-groupmfs --disabl…

掌握一个面试小心机,就业离你只差这一步!

马上进6月份,大家是已经在工作岗位上了,还是正在面试呀!不知道大家在面试过程中有没有遇到这样的问题,面试完几家公司之后进行总结,还是不知道自己为什么被pass掉,今天小编带大家搞清测试岗位面试的底层逻辑…

成为领导心腹:测试新人如何提高影响力?

作为一名新入行的测试人员,如何提高自己在工作中的影响力呢? 可能有人会问了:“测试人员不是只要安分守己的做好自己的测试工作不就行了吗?又不是当管理者,为什么要提高影响力呢?” 说实话,我…

【C++】学习笔记——二叉搜索树

文章目录 十四、二叉搜索树1. 二叉搜索树的概念2. 二叉搜索树的实现查找插入中序遍历删除拷贝构造析构函数赋值重载完整代码 3. 二叉搜索树的应用K搜索模型KV搜索模型 未完待续 十四、二叉搜索树 1. 二叉搜索树的概念 二叉搜索树又称二叉排序树,它或者是一棵空树&…

同旺科技 FLUKE ADPT 隔离版发布 ---- 2

所需设备: 1、FLUKE ADPT 隔离版 内附链接; 应用于:福禄克Fluke 12E / 15BMax / 17B Max / 101 / 106 / 107 应用于:福禄克Fluke 15B / 17B / 18B 正面: 反面: 侧面: 开孔位置(可…

面试八股之MySQL篇4——事务篇

🌈hello,你好鸭,我是Ethan,一名不断学习的码农,很高兴你能来阅读。 ✔️目前博客主要更新Java系列、项目案例、计算机必学四件套等。 🏃人生之义,在于追求,不在成败,勤通…

react组件中的共享数据

在前面的示例中,每个 MyButton 都有自己独立的 count,当每个按钮被点击时,只有被点击按钮的 count 才会发生改变: 然而,你经常需要组件 共享数据并一起更新。 为了使得 MyButton 组件显示相同的 count 并一起更新&…

四川邮电职院领导访知了汇智,深化AI专业教育与行业对接

5月16日,四川邮电职业技术学院信息工程学院软件教研室的领导团队莅临我司,就人工智能专业建设进行深入的交流与学习。我司总经理、副总经理等高层领导亲自接待,对学院领导一行的到来表示了热烈的欢迎,并全程陪同参观了公司的核心区…

【技术实操】中标麒麟高级服务器操作系统实例分享,rsync数据同步配置方案

1.rsync介绍 rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份工具。 在守护进程模式(daemon mode)下,rsync默认监听TCP端口873,以原生rsync传输协议或者通过远程shell如RSH或者SSH提供文件。SS…

基于BERT的中文情感分析实战

数据与代码链接见文末 bert开源项目解读:谷歌开源项目BERT源码解读与应用实例-CSDN博客 基于BERT的中文命名实体识别识别实战:基于BERT的中文命名实体识别识别实战-CSDN博客 1.数据 在data目录下,提供了中文情感分析的数据, 类别1代表正向情感,类别2代表负向情感。

金融信贷风控基础知识

一、所谓风控(What && Why) 所谓风控,可以拆解从2个方面看,即 风险和控制 风险(what) 风险 这里狭隘的特指互联网产品中存在的风险点,例如 账户风险 垃圾注册账号账号被泄露盗用 交易支付风险 刷单:为提升卖家店铺人气…

DETR原理分析

TransformerDetection:引入视觉领域的首创DETR 论文名称:End-to-End Object Detection with Transformers 论文地址:https://arxiv.org/abs/2005.12872 重要的图要经常出现,下图就是: DETR原理分析 网络架构部分解读…

UNI-APP设置屏幕保持常亮-不熄灭屏幕

前言 最近在实际开发过程中,我们会发现在自己使用的app当中会根据系统无操作熄灭屏幕对于一下需要长时间保持屏幕的业务就很不友好,uni-app也是提供了相应方法加上代码之后-注意app端没报错-不生效就是权限问题-需要设置相对应权限-打自定义包 代码实现…

【BSP开发经验】用户态栈回溯技术

前言 在内核中有一个非常好用的函数dump_stack, 该函数在我们调试内核的过程中可以打印出函数调用关系,该函数可以帮助我们进行内核调试,以及让我们了解内核的调用关系。同时当内核发生崩溃的时候就会自己将自己的调用栈输出到串口。 栈回溯非常有利于我…

溪谷联运SDK功能全面解析

近期,备受用户关注的手游联运10.0.0版本上线了,不少用户也选择了版本更新,其中也再次迎来了SDK的更新。溪谷软件和大家一起盘点一下溪谷SDK的功能都有哪些吧。 一、溪谷SDK具有完整的运营功能和高度扩展性 1.登录:登录是SDK最基础…

物体检测算法-R-CNN,SSD,YOLO

物体检测算法-R-CNN,SSD,YOLO 1 R-CNN2 SSD3 Yolo总结 1 R-CNN R-CNN(Region-based Convolutional Neural Network)是一种基于区域的卷积神经网络,是第一个成功将深度学习应用到目标检测上的算法。它主要由三个步骤组…