当前位置: 首页 > article >正文

(十八)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.kler.cn/a/232712.html

相关文章:

  • Spring Boot 2.x 和 Druid 多数据源整合 dm
  • 【插件】多断言 插件pytest-assume
  • 大语言模型:解锁自然语言处理的无限可能
  • JSON-RPC-CXX深度解析:C++中的远程调用利器
  • 机器情绪及抑郁症算法
  • 拦截器实现http请求访问本地图片
  • 如何连接ChatGPT?无需科学上网,使用官方GPT教程
  • AT_abl_d 题解
  • Java基础常见面试题总结-并发(二)
  • 淘宝镜像到期如何切换镜像及如何安装淘宝镜像
  • Git版本与分支
  • IPMI命令
  • 元宇宙虚拟数字人实训室:推动高校培养创新技术人才
  • 【每日一题】LeetCode——链表的中间结点
  • Python:批量url链接保存为PDF
  • 智能运维哪些算法?智能运维包含哪些
  • 多模态对比语言图像预训练CLIP:打破语言与视觉的界限,具备零样本能力
  • [Vue3]父子组件相互传值数据同步
  • Redis发布订阅及事务管理
  • docker常用10条容器操作命令
  • 阿里 EasyExcel 表头国际化
  • Vue3——模板语法(文本插值、vue内置指令)
  • Vue 前置导航
  • OpenHarmony轻量级内核-LiteOS-M
  • final、finally、finalize区别
  • 8个简约精美的WordPress外贸网站主题模板