Skip to content

权限体系

本文面向需要配置角色权限、排查 403 或设计新模块权限模型的研发人员。商业版权限至少分为三层,只有区分菜单权限、API 权限和数据权限,才能准确定位“页面可见但不可操作”“接口可调用但数据范围不正确”等问题。

三层权限分别解决什么问题

权限层它解决的问题
菜单权限当前用户是否可以看到页面入口
API 权限当前用户是否可以执行指定动作
数据权限当前用户能看到哪一部分数据

菜单权限

菜单权限决定的是“看得见”。它主要影响:

  • 前端动态菜单渲染
  • 页面入口是否显示
  • 某些按钮权限项是否被挂到菜单树中

如果一个用户连菜单都看不到,通常先查菜单权限,而不是先查接口。

API 权限

API 权限决定的是“做不做得了”。典型场景包括:

  • 新增
  • 编辑
  • 删除
  • 发布
  • 下载
  • 手动执行任务

这层很关键,因为前端隐藏按钮并不等于真正安全,后端接口仍然必须校验。

数据权限

数据权限解决的是“同一个页面中,不同角色应看到哪些数据范围”。

适合应用在:

  • 部门树
  • 区域
  • 门店
  • 项目线
  • 仅本人可见

如果业务项目里涉及组织隔离、分公司隔离或区域隔离,这一层很重要。

三层权限如何一起工作

可以按三个连续判断理解:

  1. 菜单权限:用户是否可以进入页面
  2. API 权限:用户是否可以执行页面上的动作
  3. 数据权限:用户看到的数据范围有多大

所以很多问题并不是“权限没配”,而是“配错了层级”。

最常见的几类问题

用户看不到页面

优先查:

  • 菜单配置
  • 角色菜单授权

用户能进页面,但按钮点了报 403

优先查:

  • API 权限码
  • 角色接口授权
  • 后端接口装饰器

用户能进页面,也能调接口,但数据不对

优先查:

  • 数据权限范围
  • 当前角色的数据范围设置

开发建议

新增功能时

至少要同步考虑:

  • 页面菜单
  • 按钮动作
  • 后端接口权限
  • 是否需要数据范围控制

配置角色时

除了确认页面是否可打开,还要确认:

  • 哪些角色可以查看页面
  • 哪些角色可以执行操作
  • 哪些角色可以查看完整数据范围

这是企业级权限配置中需要完成的最小验证。

检查清单

权限配置完成后,建议确认:

  • 不同角色登录后只能看到授权菜单。
  • 未授权按钮不展示,直接调用接口也会被后端拦截。
  • 需要隔离的数据按本人、部门、自定义范围等规则返回。
  • 默认角色、超级管理员、菜单和权限数据可通过初始化或同步脚本恢复。

根据 MIT 许可证发布