目录
四、@DataScope 和 ${params.dataScope}
前言
AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,它旨在通过将横切关注点(cross-cutting concerns)从商业逻辑中分离出来,以提高代码的模块化。横切关注点是指那些在应用程序中重复出现但又不属于核心业务逻辑的功能,例如日志记录、事务管理、安全性检查等。
一、数据权限的展示
在RuoYi中通过角色进行权限分配,包括菜单权限,数据权限等。
通过角色管理可以给角色添加不同的数据权限
二、数据权限作用及操作
使用数据权限,我们可以让不同的角色可以访问的数据得到控制,实现用户只能看到自己部门数据的功能。
查看普通角色ruoyi的数据权限可以知道角色只有访问测试部门的权限。
admin看到的数据
、
ry看到的数据
不同级别的用户所看到的数据范围也不相同(与我们给予的权限相关)
三、数据权限业务代码分析
3.1Controller层
3.2Service层
3.3Mapper层
四、@DataScope 和 ${params.dataScope}
@DataScope
AOP类 DataScopeAspect 处理注解 @DataScope
系统根据当前登录用户来判断是否为超级管理员 ,如果不是,则调用 dataScopeFilter 进行数据过滤,确保他们的数据访问范围。
总结
在RuoYi中使用Spring Aop 动态拦截方法处理数据权限,通过自定义注解 @DataScope 标记了需要权限控制的方法,使用切面配置动态修改SQL查询条件。减少了数据权限操作的耦合性,简化了业务流程,动态处理查询,动态控制数据的访问范围,更加的灵活且高效。