Skip to Content

管理应用权限

通过权限管理,可以控制不同用户能够访问或修改的数据,以及能够调用的 API、行为流、AI 智能体和支付能力。权限由后端校验,不应只依赖页面条件或组件显示状态限制用户操作。

权限如何生效

  • 角色是一组权限配置,可以分配给多个用户。
  • 一个用户可以拥有多个角色,最终权限为这些角色所授予权限的并集。
  • 数据权限控制角色能够访问或修改的表、字段和数据行。
  • 行为权限控制角色能够调用的 API、行为流、AI 智能体和支付能力。

系统提供两个内置角色:

  • 已登录用户:自动应用于所有已登录用户。
  • 游客:应用于未登录用户。微信小程序会静默登录,因此没有游客角色。

在编辑器中,开发者拥有完整的数据访问权限。验证线上权限时,应使用对应角色的用户身份测试。

Zion 权限系统中的角色、数据权限和行为权限

创建角色并分配用户

创建角色

进入设置 → 权限管理。除内置角色外,还可以根据业务需要创建自定义角色。

项目版本自定义角色数量
免费版0
高级版1
专业版10

点击添加并填写角色名称。

⚠️

角色名同步到后端后不能修改。创建角色时应使用稳定、明确的名称。

在 Zion 权限管理中添加角色

设置数据权限

选择角色和数据表,再依次设置表级、字段级和行级权限。用户拥有多个角色时,任一角色授予的权限都会计入最终权限。

  • 表级权限:控制角色是否可以新增、查询、修改或删除表中的数据,以及是否可以查询总数、求和、平均值等聚合结果。

    在 Zion 中设置数据表操作权限

  • 字段级权限:在支持字段配置的操作中,进一步限制角色可以访问或修改哪些字段。例如,可以允许用户修改订单状态,但不允许修改订单所属用户。

    在 Zion 中设置字段权限

  • 行级权限:使用高级筛选限制一次操作可以影响的数据行。例如,为订单查询和修改权限添加“创建者等于当前用户”的条件,使普通用户只能访问自己的订单。

    在 Zion 中打开权限高级筛选

    在 Zion 中设置行级权限条件

一个最小的“只能修改自己的订单”配置包含:

  1. 在表级权限中允许普通用户查询和修改订单。
  2. 在字段级权限中排除不允许用户修改的字段。
  3. 分别为查询和修改添加“订单创建者等于当前用户”的高级筛选条件。

如果用户同时拥有授予更大范围权限的其他角色,最终可访问范围也会相应扩大。

设置行为权限

行为权限控制角色能否调用 API、行为流、AI 智能体和支付等后端能力。除支付外,可以使用高级筛选根据调用入参进一步限制权限,例如要求行为流的指定入参不为空。

在 Zion 中设置行为权限

行为流权限的检查范围如下:

  • 从页面或组件调用行为流时,会检查当前用户权限。
  • 通过接口直接调用行为流时,会检查调用用户权限。
  • 系统触发器执行行为流时,不受用户角色权限限制。
  • 在另一个行为流中通过“调用行为流”节点执行时,不受用户角色权限限制。

应用权限变更

修改角色定义、数据权限或行为权限后,需要执行同步变更发布,新的权限配置才会在线上生效。仅保存配置不会改变当前线上版本。

给用户分配角色

权限配置完成后,可以通过以下方式给用户分配或移除角色:

  • 手动分配:在权限管理中选择用户并调整其角色。
  • 自动分配:在行为流中使用权限相关节点,例如在支付完成后为用户添加 VIP 角色。

给用户分配或移除角色会立即生效,不需要执行同步变更或重新发布。

在 Zion 权限管理中给用户分配角色

通过 Zion 行为流给用户分配角色

验证和排查权限

使用游客、已登录用户或自定义角色对应的实际用户身份,分别测试需要允许和需要拒绝的操作。没有权限时,请求会返回类似以下错误:

{ "data": null, "errors": [ { "errorCode": 403, "extensions": { "classification": "TABLE_ACCESS" }, "message": "User 1 has no permission for SELECT on order" } ] }

错误信息使用简化的用户编号:User 1 表示 ID 为 100000000001 的用户。SELECT on order 表示该用户没有查询 order 表的权限。

排查时依次确认:

  1. 用户是否拥有预期角色。
  2. 对应角色是否获得表级和字段级权限。
  3. 行级高级筛选是否允许当前数据。
  4. 行为权限是否允许当前调用入口和入参。
  5. 权限配置是否已经同步或发布。

其他错误类型参阅错误参考

Last updated on