Skip to content

数据权限配置

数据权限是 Forge Admin 在菜单权限之上提供的更细粒度的访问控制机制。它控制的是用户能看到哪些数据,而非能访问哪些功能

核心概念

Forge Admin 通过 DataScopeInterceptor 拦截器自动改写 SQL 查询语句,在数据库层面过滤数据。数据权限与角色绑定——角色拥有的用户共享相同的数据范围规则。

数据权限配置入口:系统管理 > 角色管理 > 点击目标角色的"数据权限"链接

五种数据范围

数据范围说明适用场景
全部数据可查看系统中该模块的所有数据超级管理员、审计人员
本部门数据仅查看用户所属部门的数据部门专员
本部门及以下查看本部门及所有子部门的数据部门经理
仅本人数据仅查看自己创建的数据普通员工
自定义数据手动指定可查看的部门列表跨部门协作者

配置步骤

设置数据范围

  1. 进入 系统管理 > 角色管理
  2. 在角色列表中找到目标角色,点击操作列的 数据权限 链接
  3. 在数据权限设置界面中,从下拉列表选择数据范围类型
  4. 如果选择了 自定义数据,还需要在下方的部门树中勾选允许查看的部门
  5. 点击 确定 保存配置

验证数据权限

配置生效后,拥有该角色的用户登录系统,在支持数据权限的模块页面中:

  • 列表数据显示会按照角色数据范围自动过滤
  • 查询统计结果也受数据范围限制
  • 数据导出结果同样遵循数据范围规则

工作原理

Forge Admin 后端通过 DataScopeInterceptor 拦截器实现数据过滤:

  1. 用户请求分页查询或列表查询接口
  2. 拦截器获取当前用户的所有角色及其数据权限配置
  3. 自动改写 Mapper XML 中的 SQL,追加 WHERE 条件
  4. 多个角色的数据范围取并集(最宽松)

例如:

  • 角色 A 设为本部门,角色 B 设为自定义部门 [财务部]
  • 拥有两个角色的用户,实际可见 = 本部门数据 + 财务部数据

与菜单权限的关系

数据权限与菜单权限是互补关系,两者缺一不可:

  • 菜单权限控制"能不能进这个页面,能不能点这个按钮"
  • 数据权限控制"在这个页面里能看到多少数据"

典型配置模式:

场景菜单权限数据权限
超级管理员全部菜单全部数据
部门经理用户管理、角色管理等本部门及以下
销售代表订单管理等仅本人
大区督导销售报表等自定义(多个销售部门)

注意事项

  • 数据权限仅对查询类接口生效,新增/修改/删除由菜单权限控制
  • 自定义数据权限中勾选的部门如果被删除,权限配置会失效
  • 修改角色数据权限后,已登录用户需重新登录生效

相关文档

Forge Admin — 基于 Vue3 + Spring Boot 的企业级后台管理框架