权限体系
本文面向需要配置角色权限、排查 403 或设计新模块权限模型的研发人员。商业版权限至少分为三层,只有区分菜单权限、API 权限和数据权限,才能准确定位“页面可见但不可操作”“接口可调用但数据范围不正确”等问题。
三层权限分别解决什么问题
| 权限层 | 它解决的问题 |
|---|---|
| 菜单权限 | 当前用户是否可以看到页面入口 |
| API 权限 | 当前用户是否可以执行指定动作 |
| 数据权限 | 当前用户能看到哪一部分数据 |
菜单权限
菜单权限决定的是“看得见”。它主要影响:
- 前端动态菜单渲染
- 页面入口是否显示
- 某些按钮权限项是否被挂到菜单树中
如果一个用户连菜单都看不到,通常先查菜单权限,而不是先查接口。
API 权限
API 权限决定的是“做不做得了”。典型场景包括:
- 新增
- 编辑
- 删除
- 发布
- 下载
- 手动执行任务
这层很关键,因为前端隐藏按钮并不等于真正安全,后端接口仍然必须校验。
数据权限
数据权限解决的是“同一个页面中,不同角色应看到哪些数据范围”。
适合应用在:
- 部门树
- 区域
- 门店
- 项目线
- 仅本人可见
如果业务项目里涉及组织隔离、分公司隔离或区域隔离,这一层很重要。
三层权限如何一起工作
可以按三个连续判断理解:
- 菜单权限:用户是否可以进入页面
- API 权限:用户是否可以执行页面上的动作
- 数据权限:用户看到的数据范围有多大
所以很多问题并不是“权限没配”,而是“配错了层级”。
最常见的几类问题
用户看不到页面
优先查:
- 菜单配置
- 角色菜单授权
用户能进页面,但按钮点了报 403
优先查:
- API 权限码
- 角色接口授权
- 后端接口装饰器
用户能进页面,也能调接口,但数据不对
优先查:
- 数据权限范围
- 当前角色的数据范围设置
开发建议
新增功能时
至少要同步考虑:
- 页面菜单
- 按钮动作
- 后端接口权限
- 是否需要数据范围控制
配置角色时
除了确认页面是否可打开,还要确认:
- 哪些角色可以查看页面
- 哪些角色可以执行操作
- 哪些角色可以查看完整数据范围
这是企业级权限配置中需要完成的最小验证。
检查清单
权限配置完成后,建议确认:
- 不同角色登录后只能看到授权菜单。
- 未授权按钮不展示,直接调用接口也会被后端拦截。
- 需要隔离的数据按本人、部门、自定义范围等规则返回。
- 默认角色、超级管理员、菜单和权限数据可通过初始化或同步脚本恢复。

