【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 禁止访问响应。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python-元组

元组(): 1、不可变序列,不能增加、修改、删除元组中的元素,但是是序列,可以有序列的相关操作 ttuple([10,20,30]) print("10在元组中是否存在:",(10 in t)) print("最大值:",max(t)) print(&quo…

熬了快两个月,终于拿到了淘天后端offer!

今年的暑期实习挺难找的,很多同学忙了几个月到现在还没有一个offer,真的很常见!没找到暑期实习的同学千万不要太焦虑,可以留意留意日常实习,日常实习也找不到,那就去完善自己的项目经历,认真准备…

【上海大学计算机组成原理实验报告】五、机器语言程序实验

一、实验目的 理解计算机执行程序的实际过程。 学习编制机器语言简单程序的方法。 二、实验原理 根据实验指导书的相关内容,指令的形式化表示是指采用一种规范化的符号系统,以更清晰、精确地描述和表示指令的逻辑功能和操作步骤。 汇编是一种编程语言…

最新版rancher环境配置安装和集群搭建详细教程记录

🚀 作者 :“二当家-小D” 🚀 博主简介:⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人,8年开发架构经验,精通java,擅长分布式高并发架构,自动化压力测试,微服务容器化k…

基础之音视频2

01 前言 02 mp 03 mp实例 简易音乐播放器 04 音频 sound-pool 1.作用 播放多个音频,短促音频 2.过程 加载load- 3.示例 模拟手机选铃声 步骤: 创建SoundPool对象,设置相关属性 音频流存入hashmap 播放音频 05 videoview 3gp 体积小 mp4 …

Redis简单使用

认识Redis redis:字典型数据库,存储的是键值对,是NoSql数据库 关系型数据库和NoSql之间的区别: 结构化:NoSql非结构化数据库,松散结构(键值对key-value(可以任意类型)&…

计算机Java项目|Springboot高校心理教育辅导设计与实现

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简…

计算机寄存器是如何实现的

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…

##22 深入理解Transformer模型

文章目录 前言1. Transformer模型概述1.1 关键特性 2. Transformer 架构详解2.1 编码器和解码器结构2.1.1 多头自注意力机制2.1.2 前馈神经网络 2.2 自注意力2.3 位置编码 3. 在PyTorch中实现Transformer3.1 准备环境3.2 构建模型3.3 训练模型 4. 总结与展望 前言 在当今深度学…

MySQL基础指南:从入门到精通

MySQL基础指南:从入门到精通 MySQL是一个流行的开源关系型数据库管理系统,被广泛用于Web应用程序和服务器端开发。本文将从MySQL的基本概念开始,逐步介绍MySQL的安装、常用操作、数据类型、查询语句等内容,帮助你快速入门MySQL数…

Java码农的福音:再也不怕乱码了

即便是Java这样成熟的语言,开发者们也常常会遇到一个恼人的问题——乱码。 本文将深入探讨乱码的根本原因,并针对Java开发中的乱码场景提出有效的解决方案,辅以实战代码,让Java程序员从此告别乱码困扰。 一,字符集的…

网络安全 会飞的狗狗 网络安全狗是什么

1.概述 网站安全狗是一款集网站内容安全防护、网站资源保护及网站流量保护功能为一体的服务器工具。功能涵盖了网马/木马扫描、防SQL注入、防盗链、防CC攻击、网站流量实时监控、网站CPU监控、下载线程保护、IP黑白名单管理、网页防篡改功能等模块。能够为用户提供实时的网站安…

Redis数据结构-RedisObject

1.7 Redis数据结构-RedisObject Redis中的任意数据类型的键和值都会被封装为一个RedisObject,也叫做Redis对象,源码如下: 1、什么是redisObject: 从Redis的使用者的角度来看,⼀个Redis节点包含多个database&#xff…

我的dcd爬虫-Python

我自己写的dcd爬虫,这个网站比较简单。看了看别人的程序,觉得用起来挺别扭,就自己捣鼓了一天。弄出来了。 这个网站没有反爬,有一些是动态网页,有一些是静态。 首先,获取销量排行榜前300的车型。 import…

JVM—>内存调优(发现问题)

一、什么是内存泄露? 内存溢出和内存泄露 内存泄漏(memoryleak):在Java中如果不再使用一个对象,但是该对象依然在GC ROOT的引用链上,这个对象就不会被垃圾回收器回收,这种情况就称之为内存泄漏。内存泄漏绝大多数情况都是由堆内…

机器学习笔记 KAN网络架构简述(Kolmogorov-Arnold Networks)

一、简述 在最近的研究中,出现了号称传统多层感知器 (MLP) 的突破性替代方案,重塑了人工神经网络 (ANN) 的格局。这种创新架构被称为柯尔莫哥洛夫-阿诺德网络 (KAN),它提出了一种受柯尔莫哥洛夫-阿诺德表示定理启发的函数逼近的方法。 与 MLP 不同,MLP 依赖于各个节…

【计算机毕业设计】springboot二手图书交易系统

随着世界经济信息化、全球化的到来和互联网的飞速发展,推动了各行业的改革。若想达到安全,快捷的目的,就需要拥有信息化的组织和管理模式,建立一套合理、动态的、交互友好的、 高效的二手图书交易系统。当前的信息管理存在工作效率…

Jmeter+Grafana+Prometheus搭建压测监控平台

本文不介绍压测的规范与技术指标,本文是演示针对Jmeter如何将压测过程中的数据指标,通过Prometheus采集存储,并在Granfan平台进行仪表盘展示; 介绍 系统压测属于日常项目开发中的一个测试环节,使用测试工具模拟真实用户行为&…

Facebook企业户/在Facebook上做推广有什么好处?

想到出海,必会想到Facebook作为世界上最大的社交网络,Facebook拥有难以想象的用户数量,流量大到没朋友。近年来也是独立站卖家获取流量的有力工具之一。独立站卖家在Facebook上做广告的好处? Facebook,Google 开企业广…

使用RN的kitten框架的日历组件的修改

官方网页地址 下面就是我参考官方封装的时间日期组件(主要是功能和使用方法,页面粗略做了下,不好看勿怪) import React, {useState} from react; import {StyleSheet, View, TouchableOpacity, SafeAreaView} from react-native; …