权限管理系统
权限系统是商业化软件的核心基础设施,通过精细化权限控制,有效防止数据泄露和未授权访问,保障系统和数据的完整性与安全性。Zion 提供基于角色(RBAC)和属性(ABAC)的权限管理体系,支持灵活、细粒度的权限配置。
核心概念
- 角色(Role):一类用户的集合,通过分配角色实现权限控制。一个用户可以拥有多个角色,此时用户的权限为所有角色的并集。
- 数据权限:精确控制角色可访问或修改的数据库表内容,包括表级、列级和行级权限。
- 行为权限:控制角色可使用的行为(API、行为流、支付等)。
配置流程
进入权限管理系统
从”设置”中进入”权限管理”模块,开始配置项目权限。
管理角色
系统内置了两个基础角色:
- 已登录用户:所有登录用户自动分配此角色
- 游客:未登录用户(小程序环境无游客角色)
⚠️
在小程序中,所有用户会强制使用“静默登录”的方式登录,因此没有游客角色。
开发者可根据业务需求创建自定义角色,不同的项目版本可创建角色数量限制如下:
- 免费版:0
- 高级版:1
- 专业版:10
点击”添加”按钮新增角色并设置角色名称。
⚠️
角色名一旦后端部署后就不可更改,请谨慎命名。
配置数据权限
数据权限分为三个层级,从粗粒度到细粒度逐步配置:
表级权限配置
控制整张表的增删改查权限,以及该表的聚合数据(总数、求和、平均等)的查询权限。
列级权限配置
配置表中特定列的增删改查权限,实现字段级别的权限控制。
行级权限配置
通过条件筛选实现最精细的权限控制,例如配置”用户只能更新自己创建的订单”等业务规则。
配置行为权限
控制用户可用的行为权限,包括 API、行为流、AI、支付等。
除支付外,其他行为均可增加”高级筛选”实现更精细的控制,例如配置出“行为流的入参不能为空”等业务规则。
同步后端
同步后端使得权限配置生效。
分配角色给用户
权限配置完成后,可将角色分配给用户。支持两种分配方式:
-
手动分配:在权限管理系统中手动为用户分配角色
-
自动分配:通过行为流自动管理(如购买商品后自动分配 VIP 角色)
🚀
角色分配会立即生效,不需要同步后端。
错误排查
当用户无权限访问资源时,页面会有相应的提示,在请求中会看到类似下面的 403 错误:
{
"data": null,
"errors": [
{
"errorCode": 403,
"extensions": { "classification": "TABLE_ACCESS" },
"message": "User 1 has no permission for SELECT on order"
}
]
}
其中:
User 1
表示用户 ID 为1000000000000001
的用户has no permission for SELECT on order
表示该用户没有查询 order 表的权限
理解了错误信息,并定位了相应的用户和具体权限后,可以:
- 检查角色分配:确认用户是否已分配相应角色
- 验证权限配置:检查角色权限配置是否正确
- 确认同步后端:确保权限配置已通过后端部署生效
Last updated on