Ruoyi数据权限

AOP概念

说明

  • AOP(Aspect Oriented Programming)即面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性和开发效率。

AOP中的相关概念

  • @Aspect+@Component:进行切面类的声明
  • @Aspect+@Component+@Order(1):进行切面类的声明,并设置注解执行的顺序
  • @Pointcut: 定义切入点,可通过@annotation方法指定切点,用来监听
  • @Before/@After/@AfterRunning/@AfterThrowing/@Around:五大通知Advice注解。定义切入时机增强处理逻辑,即程序要在某种情况下具体要做的操作。

数据权限作用与操作

作用

  • 不同用户所查看的用户数据有差异
    在这里插入图片描述
    在这里插入图片描述

操作

  • 修改用户admin的角色为超级管理员;用户ry的部门为运维部门,角色为普通角色
    在这里插入图片描述
    在这里插入图片描述
  • 分配角色普通角色的权限为本部门数据权限
    在这里插入图片描述
  • 重新登录查看数据
    在这里插入图片描述

数据权限后端源码分析

  • Controller

在这里插入图片描述

  • Service
    @DataScope中,deptAlias和userAlias分别指部门别名和用户别名,需要与sql语句中的部门和用户表的别名对应

在这里插入图片描述

  • DataScope 注解

在这里插入图片描述

  • AOP类 DataScopeAspect

@Aspect+@Component:定义AOP类

在这里插入图片描述
方法调用
@annotation:进行切点的定义,将带有@DataScope注解的函数作为切点
@Before:在带有@DataScope注解的函数将要执行之前,先执行doBefore的方法进行参数清空防止注入和获取当前用户信息,对于不是超级管理员的用户,则需要进行数据范围过滤。因此不是超级管理员的函数调用流程为:doBefore() -> clearDataScope() -> handleDataScope() -> dataScopeFilter()

在这里插入图片描述
dataScopeFilter()方法
获取当前用户的角色,对角色的权限进行判断并进行sql语句的拼接
在这里插入图片描述
在这里插入图片描述

  • Java Mapper

在这里插入图片描述

  • xml Mapper

在这里插入图片描述

  • Log日志展示

-

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值