(十八)springboot实战——spring securtity注解方式的授权流程源码解析

前言

在上一节内容中,我们介绍了如何在FilterSecurityInterceptor过滤器中处理用户的授权流程,并分析了其源码,spring security还提供了方法级别的授权方式,通过@EnableMethodSecurity注解启用权限认证流程,只需要在方法名上使用@PreAuthorize、@PostAuthorize、@Secured等注解就可以实现具体方法请求的权限配置,是一种更加灵活的配置方式,其底层主要使用方法MethodInterceptor拦截器以及aop切面方法实现。

正文

①使用注解@EnableMethodSecurity开启方法级别的权限验证,在注解@EnableMethodSecurity中引入了方法级别的权限选择器MethodSecuritySelector

②在MethodSecuritySelector组件中导入了切面代理注册器和方法级别的权限配置类PrePostMethodSecurityConfiguration,用于方法级别的权限配置处理

③在PrePostMethodSecurityConfiguration配置类中初始化各种注解方式的权限管理器

 ④所有请求会进入AuthorizationManagerBeforeMethodInterceptor的拦截器方法中,执行invoke方法,调用attemptAuthorization权限认证方法

⑤attemptAuthorization方法中完成用户的授权操作,如果没有授权成功,则直接抛出授权失败的异常,该方法使用了PreAuthorizeAuthorizationManager管理器完成用户的授权操作

⑥以@PreAuthorize为例,在PreAuthorizeAuthorizationManager管理器中实现了该注解方式的权限验证

 ⑦在findPreAuthorizeAnnotation方法中获取到了请求方法中的注解权限

⑧在resolveAttribute方法中获取到了当前用户请求方法的权限表单式

⑨然后调用ExpressionUtils工具类中evaluateAsBoolean方法完成用户权限的校验,后续流程和使用过滤器的权限校验基本一致,这里不会使用投票器,直接使用工具类判断用户权限

 ⑩将授权的结果封装成ExpressionAttributeAuthorizationDecision对象返回

 

结语

关于spring securtity注解方式的授权流程源码解析的内容到这里就结束了,通过以上用户授权管理流程的源码分析,我们基本清楚了spring security方法级别注解方式的权限授权流程,基于此,我们也可以使用拦截器或者aop切面自定义实现我们自己的权限授权流程,这里就不展开介绍了。我们下期见。。。。。。

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

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

相关文章

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Stepper组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Stepper组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Stepper组件 鸿蒙(HarmonyOS)仅能包含子组件StepperIte…

k8s 部署java应用 基于ingress+jar包

k8 集群ingress的访问模式 先部署一个namespace 命名空间 vim namespace.yaml kind: Namespace apiVersion: v1 metadata:name: ingress-testlabels:env: ingress-test 在部署deployment deployment是pod层一层封装。可以实现多节点部署 资源分配 回滚部署等方式。 部署的…

【每日一题】LeetCode——反转链表

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Span组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Span组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Span组件 鸿蒙(HarmonyOS)作为Text组件的子组件&#xff0…

【RPA】智能自动化的未来:AI + RPA

伴随着人工智能(AI)技术的迅猛进步,机器人流程自动化(RPA)正在经历一场翻天覆地的变革。AI为RPA注入了新的活力,尤其在处理复杂任务和制定决策方面。通过融合自然语言处理(NLP)、机器…

React环境配置

1.安装Node.js Node.js官网:https://nodejs.org/en/ 下载之后按默认选项安装好 重启电脑即可自动完成配置 2.安装React 国内使用 npm 速度很慢,可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm。 ①使用 winR 输入 cmd 打开终端 ②依…

SpringBoot:日志框架

使用日志框架demo:点击查看LearnSpringBoot04logging 点击查看更多的SpringBoot教程 一、springboot日志框架简介 SpringBoot:底层是Spring框架,Spring框架默认是用ICL; SpringBoot选用SLF4j和logback; 统一使用slf4…

嵌入式中详解 ARM 几个常见的寄存器方法

大家好,今天来聊聊对于ARM几个特殊寄存器的理解,FP、SP和LR。 1、介绍 FP:栈顶指针,指向一个栈帧的顶部,当函数发生跳转时,会记录当时的栈的起始位置。 SP:栈指针(也称为栈底指针&…

git rebase # |REBASE 1/1 #rebase in progress; onto

git 代码解决冲突之后会提示rebase in progress; onto 1 执行git rebase --abort 回到没有pull代码之前 2 git pull 3 解决冲突 4 git add . (不需要git commit) 5 git rebase --continue 6 git push

ruoyi若依框架SpringSecurity实现分析

系列文章 ruoyi若依框架学习笔记-01 ruoyi若依框架分页实现分析 ruoyi若依框架SpringSecurity实现分析 文章目录 系列文章前言具体分析一、项目中的SpringSecurity版本二、登录认证流程分析三、权限鉴定四、退出登录五、SpringSecurity配置类 总结 前言 在ruoyi-vue若依框…

Ubuntu22.04 gnome-builder gnome C 应用程序习练笔记(一)

一、序言 gnome-builder构建器是gnome程序开发的集成环境,支持主力语言C, C, Vala, jscript, python等,界面以最新的 gtk 4.12 为主力,将其下版本的gtk直接压入了depreciated,但gtk4.12与普遍使用的gtk3有很大区别,原…

vscode +markdown 的安装和使用

文章目录 前言一、vscode markdown 是什么?1.vscode是什么?2.markdown 是什么? 二、安装步骤1.下载2.安装 三、安装插件1.安装 Markdown All in One2.安装 Markdown Preview Enhanced3. Paste Image v1.0.44.LimfxCodeExv0.7.105.Code Spell …