Spring Security+Spring Boot实现登录认证以及权限认证

news2024/12/22 0:07:08

基本概念

“Authentication(认证)”是spring security框架中最重要的功能之一,所谓认证,就是对当前访问系统的用户给予一个合法的身份标识,用户只有通过认证才可以进入系统,在物理世界里,有点类似于“拿工卡刷门禁”的场景。

具体文章🔗:Spring Security 6.x 浅谈身份认证的架构设计 - fullstackyang - SegmentFault 思否

认证架构设计

接口

  • Authentication:顶层接口,用于保存身份认证信息,主要包括三个部分:用户标识,凭证,权限信息
  • SecurityContext:顶层接口,安全上下文,内部之定义了getAuthentication和setAuthentication两个方法,用于装载对象容器
  • AuthenticationManager:定义了认证方法
  • AuthenticationProvider:认证协议的具体实现
  • SecurityContextRepository:定义了保存和加载SecurityContext对象的方法
  • SecurityContextHolderStrategy:顶层接口,定义了在当前请求的线程中,获取和设置SecurityContext对象等方法。

总结

spring security整个认证架构中的认证流程和存取校验流程,再做一个总结:

  • 认证流程:AuthenticationManager为这个系统所支持的所有认证协议,统一提供authenticate方法,比如支持用户名密码登录,也支持短信登录,第三方授权登录,不论哪种方式登录,最终都交由这个方法执行,其实现类ProviderManager则高度封装了认证过程,使得不同认证协议进入不同的认证实现类,然后都返回Authentication对象。Authentication定义了一个认证信息应该必须包含的信息,包括用户标识,凭证,权限,因此我们可以自定义AuthenticationProvider,并注册到ProviderManager中,然后再实现自定义认证Filter和Authentication。
  • 存取校验流程:在得到认证后的Authentication对象,需要解决的是如何获取Authentication对象,以判断该请求是否已经通过认证,这里就引入了一个重要的类Context,相当于装载Authentication对象容器。首先依赖SecurityContextRepository从持久化的介质(例如session)中加载出来SecurityContext对象,其次通过SecurityContextHolder内部策略类方便快速地读写SecurityContext对象,这里很容易就想到使用ThreadLocal来实现同一个请求的线程中存取操作,spring security也是这么做的,最终在得到SecurityContext后,可以通过其内部的Authentication对象判断是否已认证。

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

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

相关文章

百度安全X盈科全球数据合规服务中心:推进数据安全及合规智能化创新领域深化合作

6月19日,百度安全与盈科全球数据合规服务中心举行合作签约仪式,双方将充分发挥各自优势,在数据安全及合规智能化创新领域深化合作,在遵守国家法律法规和顺应市场规则的前提下,推动地方经济社会发展,促进企业…

2-11 基于matlab的BP-Adaboost的强分类器分类预测

基于matlab的BP-Adaboost的强分类器分类预测,Adaboost是一种迭代分类算法,其在同一训练集采用不同方法训练不同分类器(弱分类器),并根据弱分类器的误差分配不同权重,然后将这些弱分类器组合成一个更强的最终…

20240620每日后端---------Spring Boot中的 5 大设计模式最佳实践和示例 这些是我经常使用的设计模式并且非常喜欢

在本文中,我们将深入探讨五种基本设计模式,并探讨在 Spring Boot 项目中有效应用它们的最佳实践。每个模式都将附有一个实际示例来演示其实现。 单例模式 Singleton 模式确保一个类只有一个实例,并提供对它的全局访问点。这对于管理资源&am…

PhotoShop批量生成存储jpg

1、说明 根据之前自动批量生成psd格式的文件。打印一般都是jpg格式的,那如果将这些psd的文件,生成jpg,本文采用ps的动作 2、生成动作 点击窗口-动作 录屏存储jpg动作 3、根据动作生成 选择相应动作之后选择需要处理的文件夹

java读取wps嵌入式图片思路

这个只写了思路具体代码在文章最后,不想了解得直接去拿代码 了解Excel数据结构 Excel 文件格式后缀xls,xlsx 其实是一个压缩文件,是由多个文件夹以及xml 文件组合为一个文件,xml文件记录了Excel得内容以及样式等信息。加入在桌面新建一个xls…

怎么缩小pdf文件大小

在数字化时代,pdf文件已经成为我们日常生活和工作中不可或缺的一部分。然而,随着pdf文件内容的增多,其大小也会相应增加,这给文件的传输、存储和共享带来了诸多不便。因此,如何有效地压缩pdf文件大小,成为了…

Java 8 Stream API介绍

Java 8引入了Stream API,这是对集合框架的一种增强,它允许你以一种声明式的方式处理数据集合。Stream API的核心在于将数据的操作分为两个主要阶段:中间操作和终端操作。中间操作返回的是一个新的Stream,可以链式调用多个中间操作…

如何使用SQL工具批量执行SQL文件?(以MySQL和SQLynx为例)

目录 1. 配置MySQL数据源 2. 打开 SQL 文件 3. 执行 SQL 文件 4. 检查执行结果 5. SQL文件示例 6. 注意事项 7. 总结 在现代数据库管理和操作中,批量执行 SQL 文件在 MySQL 中显现出其巨大的价值和不可替代的作用。通过将多个 SQL 语句集成在一个文件中进行批…

QT截图程序三-截取自定义多边形

上一篇文章QT截图程序,可多屏幕截图二,增加调整截图区域功能-CSDN博客描述了如何截取,具备调整边缘功能后已经方便使用了,但是与系统自带的程序相比,似乎没有什么特别,只能截取矩形区域。 如果可以按照自己…

【Esp32连接微信小程序蓝牙】附Arduino源码《 返回10007 相同特征id冲突问题》

前言 最近接了一个外包,发现了esp32连接小程序会有很多bug,所以接下来会慢慢更新解决方案,还是需要多接触项目才能进步呀兄弟们! 附上uuid的生成链接: // See the following for generating UUIDs: // https://www.uu…

112、路径总和

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点…

C语言 图的基础知识

图 图的基本概念图的存储方法**邻接矩阵**:邻接表 图的遍历深度优先(DFS)广度优先(BFS) 最小生成树Prim算法Kruskal算法 最短路径问题 图的基本概念 图的定义: 图是由顶点的非空有穷集合与顶点之间关系&am…

鸿蒙开发通信与连接:【@ohos.rpc (RPC通信)】

RPC通信 本模块提供进程间通信能力,包括设备内的进程间通信(IPC)和设备间的进程间通信(RPC),前者基于Binder驱动,后者基于软总线驱动。 说明: 本模块首批接口从API version 7开始支…

MySQL之复制(七)

复制 定制的复制方案 分离功能 许多应用都混合了在线事务处理(OLTP)和在线数据分析(OLAP)的查询。OLTP查询比较短并且是事务型的。OLAP查询则通常很大,也很慢,并且不要求绝对最新的数据。这两种查询给服务器带来的负担完全不同,因此它们需…

go sync包(一) 互斥锁(一)

Sync包 sync包是go提供的用于并发控制的方法,类似于Java的JUC包。 (图片来自《go设计与实现》) 互斥锁 Mutex Go 语言的 sync.Mutex 由两个字段 state 和 sema 组成。 state 表示当前互斥锁的状态。sema 是用于控制锁状态的信号量。 ty…

Vue66-vue-默认插槽

一、默认插槽需求 1-1、原本的写法: 在每个category组件中用v-show来做条件渲染,但是不方便! 1-2、默认插槽 img标签,ul标签,video标签,都是在app组件中完成解析之后,塞到category组件中的&…

git的远程管理与标签管理

✨前言✨ 📘 博客主页:to Keep博客主页 🙆欢迎关注,👍点赞,📝留言评论 ⏳首发时间:2024年6月20日 📨 博主码云地址:博主码云地址 📕参考书籍&…

Docker 可用镜像源

当使用 docker 发现拉取不到镜像时,可以编辑 /etc/docker/daemon.json 文件,添加如下内容: 这文章不涉及政治,不涉及敏感信息,三番五次的审核不通过,一删再删,只好换图片了。 重新加载服务配置…

Meta悄咪咪的发布多款AI新模型

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)则…

绿茶集团重启IPO:流量渐退、业绩波动,还能讲出好故事吗?

近日,绿茶集团有限公司(下称“绿茶集团”)向港交所递交上市申请,花旗、招银国际为其联席保荐人。 回望绿茶集团的上市之路,可谓有诸多坎坷。该公司于2021年3月首度向港交所发起冲击,但却将中文版招股书中的“流动负债总额”错写成…