目录
AOP 类DataScopeAspect 处理注解@DataScope
数据权限前端显示
如下图所示,进入分配数据权限页面。(更多->数据权限)
在该界面,可以为角色添加不同的数据权限,实现数据管理。
数据权限作用及操作
使用数据权限,我们可以让具有不同权限的用户看到的数据有差别,我们进行如下操作来对比说明。
用户admin 的角色为超级管理员,超级管理员设置为具有访问全部数据权限
用户ry 的角色为普通角色,普通角色设置为只有访问本部门数据权限,其所属部门为测试部门
修改普通用户的数据权限
登录普通用户
账号:ry 密码:admin123
前端显示效果
普通用户:
admin用户:
数据权限后端代码分析
Controller层
SysUserController.java
找到关键代码,图中是对代码的分析
Service层
SysUserServiceImpl.java
找到关键代码,图中是对代码的分析
Mapper层
SysUserMapper.java
找到关键代码,图中是对代码的分析
${params.dataScope}对数据范围进行过滤。
AOP 类DataScopeAspect 处理注解@DataScope
@DataScope注解
最后是AOP 类DataScopeAspect 处理注解@DataScope
根据当前登录用户的信息,判断是否为超级管理员,如果不是,则调用dataScopeFilter
方法进行数据权限过滤。这种机制通常用于确保只有非管理员用户才会受到数据权限的约束,管理员用户可以访问所有数据。
接下来是AOP 类DataScopeAspect 对于全部权限、自定义权限、本部门及以下权限、仅本人权限最终添加的SQL 语句及作用.
此切面在目标方法执行前会拦截,检查用户的角色和数据权限配置,然后根据不同的权限类型生成相应的SQL条件。
到此介绍完毕。