九、Spring Boot集成Spring Security之授权概述

文章目录

  • 往期回顾:Spring Boot集成Spring Security专栏及各章节快捷入口
  • 前言
  • 一、授权概述
  • 二、用户权限
  • 三、用户授权流程
  • 三、Spring Security授权方式
    • 1、请求级别授权
    • 2、方法级别授权

往期回顾:Spring Boot集成Spring Security专栏及各章节快捷入口

  • Spring Boot集成Spring Security专栏
  • 一、Spring Boot集成Spring Security之自动装配
  • 二、Spring Boot集成Spring Security之实现原理
  • 三、Spring Boot集成Spring Security之过滤器链详解
  • 四、Spring Boot集成Spring Security之认证流程
  • 五、Spring Boot集成Spring Security之认证流程2
  • 六、Spring Boot集成Spring Security之前后分离认证流程最佳方案
  • 七、Spring Boot集成Spring Security之前后分离认证最佳实现
  • 八、Spring Boot集成Spring Security之前后分离认证最佳实现对接测试
  • 九、Spring Boot集成Spring Security之授权概述
  • 十、Spring Boot集成Spring Security之HTTP请求授权

前言

本文介绍什么是授权,Spring Security的授权配置有哪些,配合以下内容观看效果更佳!!!

  • 什么是授权,授权有哪些流程,Spring Security的授权配置有几种?请查看九、Spring Boot集成Spring Security之授权概述
  • HTTP请求授权的实现原理是什么,如何配置HTTP请求授权?请查看十、Spring Boot集成Spring Security之HTTP请求授权
  • 方法授权的实现原理是什么,如何配置方法授权?请查看十一、Spring Boot集成Spring Security之方法授权
  • 如何实现基于RBAC模型的授权方式?请查看十二、Spring Boot集成Spring Security之基于RBAC模型的授权

一、授权概述

​ 授权简单来说就是判断某个用户能不能访问某个接口,可以访问时授权成功,不能访问时授权失败;用户包括已登录的用户和未登录的用户即匿名用户,接口包括接口地址和接口的请求类型,接口对于系统使用者来说可以简单理解为菜单按钮。

​ 目前最流行的权限模型是RBAC权限模型,这种模型的思想是将菜单/接口/权限按照完成某项任务的最小权限进行分组,分出来的组即为角色,再按照用户的职责授予相应的角色。其中菜单/接口/权限和角色之间为多对多的关系,即一项任务可能需要多个操作或者多项任务可能需要同一个操作;用户与角色之间也是多对多的关系,即一个用户可能需要完成多项任务或者不同用户可能需要完成相同的任务。

​ Spring Security的授权还包括对认证结果、接口请求参数、接口返回值等更细粒度的处理。

二、用户权限

​ Spring Security中用户的权限接口为GrantedAuthority,并提供默认实现SimpleGrantedAuthority,SimpleGrantedAuthority有一个String属性role,role用于判断用户是否允许访问接口。

​ 在配置接口权限时还有两个权限的概念role(hasXxxRole)和authority(hasXxxAuthority),role和authority最终都会转化为SimpleGrantedAuthority的role属性,并和用户的权限作对比,以判断用户是否允许访问接口,唯一的区别是role转为SimpleGrantedAuthority的role属性时会默认添加ROLE_前缀,而authority会直接转化为SimpleGrantedAuthority的role属性,即ROLE_{role}={authority}=simpleGrantedAuthority.role。

三、用户授权流程

  1. 认证时设置用户权限
  2. 授权时获取接口及其需要的权限
  3. 校验用户权限和接口权限是否有交集
  4. 有交集时校验成功调用接口
  5. 没有交集时校验失败抛出异常

三、Spring Security授权方式

1、请求级别授权

  1. 实现方式:过滤器
  2. 适用场景
    • 基于URL的访问控制
    • 统一的安全策略
    • 简单地权限控制

2、方法级别授权

  1. 实现方式:AOP(拦截器)
  2. 适用场景
    • 细粒度的访问控制
    • 动态权限检查
    • 基于业务逻辑的权限控制

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

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

相关文章

diff算法

vue的diff算法详解 vue: diff 算法是一种通过同层的树节点进行比较的高效算法 其有两个特点: 比较只会在同层级进行, 不会跨层级比较 在diff比较的过程中,循环从两边向中间比较 diff 算法在很多场景下都有应用,在 vue 中&…

Git命令大全(超详细)

Git 是一个分布式版本控制系统,用于跟踪计算机文件的更改,并协调多个用户之间的工作。下面是一份较为详细的 Git 命令大全,涵盖了从初始化仓库到日常使用中常见的操作。 1. 初始化与配置 设置用户信息: git config --global user.name &quo…

【Vue3】main.js

【Vue3】main.js 创建Vue应用实例引入并配置路由配置状态管理挂载应用全局属性与方法使用其他插件 在Vue 3项目中,main.js 文件是整个应用的入口点。 它负责初始化Vue实例、配置全局选项、注册全局组件、引入插件以及挂载Vue实例到DOM上。 通过 main.js,…

Scratch游戏推荐 | 星际前线:帝国逆袭——揭开帝国野心,挑战星际极限!

今天推荐一款充满科幻与冒险元素的Scratch作品——《星际前线:帝国逆袭》!由theChAOTiC制作,这款游戏让你踏入危险的星际前线,与暴虐的Terran帝国展开激烈对抗。在这里,你将探索未知的星域,击败强大的Boss&…

【语音识别】Zipformer

Zipformer 是kaldi 团队于2024研发的序列建模模型。相比较于 Conformer、Squeezeformer、E-Branchformer等主流 ASR 模型,Zipformer 具有效果更好、计算更快、更省内存等优点。并在 LibriSpeech、Aishell-1 和 WenetSpeech 等常用数据集上取得了当时最好的 ASR 结果…

《Vue零基础入门教程》第十五课:样式绑定

往期内容 《Vue零基础入门教程》第六课:基本选项 《Vue零基础入门教程》第八课:模板语法 《Vue零基础入门教程》第九课:插值语法细节 《Vue零基础入门教程》第十课:属性绑定指令 《Vue零基础入门教程》第十一课:事…

Docker的常用的容器隔离机制简介

一、Namespace Linux Namespace是Linux内核提供的一种机制,它用于隔离不同进程的资源视图,使得每个进程都拥有独立的资源空间,从而实现进程之间的隔离和资源管理。通过使用Namespace,可以在一个物理主机上创建多个独立的虚拟环境,每个环境都有自己的进程、文件系统、网络…

buuctf-[SUCTF 2019]EasySQL 1解题记录

把你的旗帜给我,我会告诉你这面旗帜是对的。 堆叠注入查询数据库 1; show databases; ​ 查询表名 1; show tables; 获取flag 1;set sql_modepipes_as_concat;select 1

云原生周刊:Kubernetes 和 Docker 的对比

开源项目推荐 Dokploy Dokploy 是一个功能强大的开源平台,为开发者提供与 Vercel、Netlify 和 Heroku 类似的全栈部署与托管体验。它支持现代化的开发工作流,提供快速、可靠的部署服务,涵盖前端、后端和全栈应用。 Dokploy 的开源特性让开…

整数benders分解算法

整数Benders分解算法是一种用于解决混合整数规划问题的算法,由Jacques F. Benders在1962年首次提出。这种算法特别适用于那些包含连续变量和整数变量的极值问题,即混合整数规划问题(MIP)。在实际应用中,它不仅局限于MI…

Git的基本使用操作

文章目录 Git 全局配置基本操作Git 常用命令版本回退根据版本号回滚分支远端分支 🏡作者主页:点击! 🤖Git专栏:点击! ⏰️创作时间:2024年12月1日12点50分 Git 全局配置 虽然说是全局配置&am…

飞凌嵌入式受邀亮相OpenHarmony人才生态大会2024

2024年11月27日,OpenHarmony人才生态大会2024在武汉洲际酒店举行。在这场汇聚了行业精英、技术大咖及生态伙伴的年度盛会上,飞凌嵌入式作为OpenHarmony社区的重要成员受邀出席,并展示了其在OpenHarmony 4.1系统适配方面的最新成果。 在大会的…

45 基于单片机的信号选择与温度变化

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,采用DS18B20检测温度,通过三种LED灯代表不同状态。 采用DAC0832显示信号脉冲,通过8位数码管显示温度。 信号脉冲可以根据两个按键分别调整为正弦…

Java int[]与ArrayList<>数组 转换 详解

在 Java 中&#xff0c;int[] 与 ArrayList<Integer> 是两种常用的数据结构。由于 int[] 是基本数据类型数组&#xff0c;而 ArrayList<Integer> 是对象集合类型&#xff0c;两者的转换需要注意类型转换的细节。以下是完整的讲解和实现方法。 1. int[] 转换为 Arra…

大数据新视界 -- Hive 基于 MapReduce 的执行原理(上)(23 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Qt 2D绘图之三:绘制文字、路径、图像、复合模式

参考文章链接: Qt 2D绘图之三:绘制文字、路径、图像、复合模式 绘制文字 除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontInfo()函数可以获取字体的信息,它返回QFontInfo类对象…

React-状态管理详解

1、传统MVC框架的缺陷 什么是MVC&#xff1f; MVC的全名是Model View Controller&#xff0c;是模型(model)&#xff0d;视图(view)&#xff0d;控制器(controller)的缩写&#xff0c;是一种软件设计典范。 V即View视图是指用户看到并与之交互的界面。 M即Model模型是管理数…

AI潮汐日报1128期:Sora泄露引发争议、百度早期研究对AI领域Scaling Law的贡献、Meta发布系列AI开源项目

AI 潮汐日报&#xff0c;旨在提供最新潮、最核心、最有意思的AI速递。四大专栏&#xff1a;今日热点、应用速递、研究进展、思维碰撞。 今日热点 OpenAI文本转视频模型Sora泄露引发争议 OpenAI的文本转视频AI模型Sora在Hugging Face上遭遇泄露&#xff0c;泄露者为参与测试的…

PH热榜 | 2024-12-02

1. Muku.ai 标语&#xff1a;AI网红广告代理公司 介绍&#xff1a;木库AI是家AI网红营销机构&#xff0c;利用AI虚拟形象创作用户原创视频广告。只需提供产品链接&#xff0c;就能生成吸引人的内容&#xff0c;从而提升各大平台的销售额。 产品网站&#xff1a; 立即访问 P…

Flink学习连载文章9--状态(State)

State state 可以理解为-- 历史计算结果 有状态计算和无状态计算 无状态计算: 不需要考虑历史数据, 相同的输入,得到相同的输出!如:map, 将每个单词记为1, 进来一个hello, 得到(hello,1),再进来一个hello,得到的还是(hello,1) 有状态计算: 需要考虑历史数据, 相同的输入,可…