权限管理系统
权限系统是商业化软件的基础设施,通过精细化的权限控制,能够有效防止数据泄露、未授权访问等安全风险,确保系统和数据的完整性、保密性。 Zion提供了一套结合角色(RBAC)和属性(ABAC)权限管理系统。在保障数据安全的同时,还能够实现灵活、精准地进行权限控制。
基本概念
角色:一类用户的集合;通过将用户授予角色,角色绑定着多个权限的方式来进行用户权限控制
数据权限:可精准地控制角色能够访问或修改的数据内容
行为权限:用于控制角色能够使用的行为,例如:行为流、api执行、支付行为、退款行为等
开始配置
1. 打开“配置”,进入“权限管理”
2. 角色管理
系统内置了两个角色:
- 已登录用户
- 任何登录(通过用户名密码登录、手机密码登录等等)的用户都会自动赋予该角色,
- 由于小程序会自动执行“静默登录”行为,因此小程序上的任意用户都拥有该角色
- 游客
- 未登录的访客都是该角色
- 小程序中没有游客
除了系统内置的角色,开发者可自己创建角色。不同的项目版本可创建的角色不同:
免费版:0个
高级版:1个
专业版:10个
点击“添加”按钮添加角色,添加后系统会给一个默认的角色名。一旦后端部署让角色生效后,名字将不可更改。
当用户拥有多个角色时,其权限为所有角色权限的并集(例如用户拥有两个角色,一个角色有支付的权限,另一个没有,最终该用户拥有支付的权限)。
如果需要在前端页面获取用户的角色,可以在“当前用户数据”里找到“角色列表”。它是一个角色名列表:['Logged-in user', 'vip user']
3. 角色的权限配置
数据权限
操作权限:进行是否能对数据进行增删改查的权限管理
字段权限:进一步配置对于这张数据表中某一列(字段)的操作权限
高级筛选:通过配置行筛选,来配置基于属性的更精细化的操作权限(例如:用户只能修改自己的数据)
行为权限
控制用户使用行为的权限,包括:API、行为流、AI、支付。除了支付以外的行为,都可以再增加“高级筛选”,用于更精细的权限控制(例如可以配置在某个时间点以后才能使用行为流等)
4. 将角色授予用户
在角色配置完了以后,就可以将其授予给某个用户。一共有两种方式
在权限管理系统中手动管理 点击「用户管理」下方的按钮,可以查看这个角色下的用户有哪些,为这个角色添加/删除用户。
在行为流中自动管理 使用行为流中的权限节点,可以对某些用户进行角色的授予和移除,实现一些自动化的场景。例如:当用户购买商品成功后,授予其VIP的角色
5. 使权限配置生效
权限配置变更后,需要部署后端使其生效。通过自动化授权的行为流也需要发布后才会生效。
权限生效后,如果用户没有权限使用某个资源,将会报错。页面上会看到类似提示消息:“User 1 has no permission for SELECT on order”。在请求里会看到这样的报错:
{
"data": null,
"errors": [
{
"errorCode": 403,
"extensions": {
"classification": "TABLE_ACCESS"
},
"locations": [
{
"column": 3,
"line": 2
}
],
"message": "User 1 has no permission for SELECT on order",
"operation": "order",
"path": [
"order"
]
}
]
}
其中,“User 1” 表示id 为 1000000000000001 的用户,“has no permission for SELECT on order” 表示没有查询order表的权限。
理解错误信息后,就可以进入权限查看修改相关配置。