目录
前言
在现代企业管理系统中,数据权限控制是一个非常重要的功能。以 ruoyi
框架为例,数据权限通过 DataScopeAspect
切面类实现了统一的权限控制逻辑。本文将结合 ruoyi
框架,详细解析 DataScopeAspect
类如何对 全部权限、自定义权限、本部门及以下权限、仅本人权限 进行处理,并输出对应的 SQL 语句及其作用。
1、什么是DataScopeAspect?
DataScopeAspect
是 ruoyi
框架中基于 AOP(面向切面编程)实现的数据权限控制类。其核心功能是:
- 动态拼接 SQL 条件:根据当前用户的权限范围,在执行查询语句时附加数据权限过滤条件。
- 统一处理权限逻辑:通过拦截方法,自动为查询语句附加权限条件,无需在每个业务方法中重复编写权限判断代码。
- 保证数据安全性:防止用户越权访问系统中不属于其权限范围的数据。
2、数据权限展示
我们先进入ruoyi界面然后按照上图顺序点击更多再点击权限管理进入数据管理界面
点击修改可以进入权限管理界面
菜单权限可以管理用户可看到界面。
3、代码分析
1.Controller层
我们按照ruoyi-admin\src\main\java\com.ruoyi\web\controller\system\SysUserControllrer.java路径进入该文件。上图红框中的代码为相关代码。
2、Service层
我们按照ruoyi-system\src\main\java\con.ruoyi.system\service\impl\SysUserServiceimpl.java路径打开该文件,图中的红框代码是调用DataScope注释。
3.Mapper层
我们按照ruoyi-system\src\main\java\con.ruoyi.system\mapper\SysUserMapper路径打开该文件,红框内为相关代码。
然后我们去SysUser的xml文件,我们会发现${params.Scope}这个是起过滤作用。