数据权限配置
数据权限是 Forge Admin 在菜单权限之上提供的更细粒度的访问控制机制。它控制的是用户能看到哪些数据,而非能访问哪些功能。
核心概念
Forge Admin 通过 DataScopeInterceptor 拦截器自动改写 SQL 查询语句,在数据库层面过滤数据。数据权限与角色绑定——角色拥有的用户共享相同的数据范围规则。
数据权限配置入口:系统管理 > 角色管理 > 点击目标角色的"数据权限"链接。
五种数据范围
| 数据范围 | 说明 | 适用场景 |
|---|---|---|
| 全部数据 | 可查看系统中该模块的所有数据 | 超级管理员、审计人员 |
| 本部门数据 | 仅查看用户所属部门的数据 | 部门专员 |
| 本部门及以下 | 查看本部门及所有子部门的数据 | 部门经理 |
| 仅本人数据 | 仅查看自己创建的数据 | 普通员工 |
| 自定义数据 | 手动指定可查看的部门列表 | 跨部门协作者 |
配置步骤
设置数据范围
- 进入
系统管理 > 角色管理 - 在角色列表中找到目标角色,点击操作列的 数据权限 链接
- 在数据权限设置界面中,从下拉列表选择数据范围类型
- 如果选择了 自定义数据,还需要在下方的部门树中勾选允许查看的部门
- 点击 确定 保存配置
验证数据权限
配置生效后,拥有该角色的用户登录系统,在支持数据权限的模块页面中:
- 列表数据显示会按照角色数据范围自动过滤
- 查询统计结果也受数据范围限制
- 数据导出结果同样遵循数据范围规则
工作原理
Forge Admin 后端通过 DataScopeInterceptor 拦截器实现数据过滤:
- 用户请求分页查询或列表查询接口
- 拦截器获取当前用户的所有角色及其数据权限配置
- 自动改写 Mapper XML 中的 SQL,追加
WHERE条件 - 多个角色的数据范围取并集(最宽松)
例如:
- 角色 A 设为本部门,角色 B 设为自定义部门 [财务部]
- 拥有两个角色的用户,实际可见 = 本部门数据 + 财务部数据
与菜单权限的关系
数据权限与菜单权限是互补关系,两者缺一不可:
- 菜单权限控制"能不能进这个页面,能不能点这个按钮"
- 数据权限控制"在这个页面里能看到多少数据"
典型配置模式:
| 场景 | 菜单权限 | 数据权限 |
|---|---|---|
| 超级管理员 | 全部菜单 | 全部数据 |
| 部门经理 | 用户管理、角色管理等 | 本部门及以下 |
| 销售代表 | 订单管理等 | 仅本人 |
| 大区督导 | 销售报表等 | 自定义(多个销售部门) |
注意事项
- 数据权限仅对查询类接口生效,新增/修改/删除由菜单权限控制
- 自定义数据权限中勾选的部门如果被删除,权限配置会失效
- 修改角色数据权限后,已登录用户需重新登录生效
相关文档
- RBAC 权限配置指南 — 完整权限体系配置
- 角色管理 — 角色 CRUD 操作
