Skip to content

身份与权限

身份与权限按「当前用户有没有某权限 / 某角色」,控制表单里字段的显隐、必填、禁用,以及公式分支。配置人员在条件与公式里勾选权限点;权限树和当前用户授权由环境准备。

条件类型选权限

和「设计器操作权限」的区别

身份与权限(本文)设计器组件操作权限
作用对象填写 / 预览时的业务表单设计器里能否删字段、改事件等
典型问题无导出权限则隐藏导出按钮实施账号不能删某系统字段
配置方式权限树 + 当前用户授权 + 条件/公式环境对设计器的组件权限配置

二者互不影响,可同时存在。本文只讲业务侧身份与权限。

整体流程

text
1. 环境预置「权限树」「角色树」(设计时可勾选的清单)
2. 运行 / 预览时写入「当前用户拥有的权限、角色」
3. 在隐藏 / 必填 / 禁用 / 联动 / 事件条件,或公式中判断
4. 预览切换不同身份数据,验收显隐与禁用

未预置树时,条件面板里通常不会出现「权限」「角色」类型。 只预置树、未写入当前用户授权时,判断结果会一直不匹配,表现像「谁都没权限」。

三步关系图

环境准备(管理员侧)

若配置人员看不到「权限 / 角色」类型,请将本节交给管理员完成。

1. 预置权限树与角色树

由环境提供两棵树(结构相同):

含义
标识唯一编码,条件与公式都用它判断,建议稳定,如 goods:info:export
名称显示名称,如「导出商品」
子级可选,形成树形分组

权限树示例:

text
系统管理
  └ 用户管理
       ├ 用户列表        system:user:list
       ├ 新增用户        system:user:create
       └ 编辑用户        system:user:edit
商品管理
  ├ 商品列表            goods:info:list
  └ 导出商品            goods:info:export

角色树示例:

text
平台端
  ├ 超级管理员          platform:admin:super
  └ 运营管理员          platform:admin:ops
商户端
  ├ 店长                merchant:store:manager
  └ 收银员              merchant:store:cashier

说明:

  • 空配置或不配 → 条件里不出现对应类型。
  • 树只是「可选清单」,不等于当前用户已拥有这些权限。
  • 标识需与登录态 / 后端发放的编码一致。

权限树配置效果

2. 写入当前用户拥有的权限与角色

预览与正式运行时,需要把当前用户实际拥有的标识列表写入全局数据(名称以环境约定为准,常见为):

数据名含义内容形态
$permissions当前用户权限标识列表如「商品列表、导出商品」对应的编码数组
$roles当前用户角色标识列表如「店长」对应的编码数组

常见写入时机:登录成功、进入表单页、表单加载完成时按接口结果更新。

权限或角色变更后需重新写入;已打开的表单才会按新授权计算。

设计预览与正式环境一致

建议预览所用的授权数据与线上同一套写入方式,避免「设计器里看着对、上线后不对」。

配置人员如何使用

若条件类型里已能看到「权限」「角色」:

  1. 按业务描述规则(例如「无导出权限则隐藏导出按钮」)。
  2. 落到隐藏 / 必填 / 禁用 / 公式。
  3. 请管理员用测试账号(不同权限)预览,或临时改注入列表验收。
  4. 权限点改名只改显示名称;改标识必须同步改条件、公式与后端发放。

在逻辑条件中使用

适用于:隐藏条件必填条件禁用条件数据联动、事件流条件等。条件写法见使用逻辑条件

如何配置

  1. 打开条件编辑器 → 条件类型选 权限角色
  2. 比较方式选 包含 / 不包含(以界面为准)。
  3. 从树中勾选目标权限点或角色。
  4. 保存后,用不同授权预览。

判断的是:当前用户列表里是否包含所选节点的标识。

业务示例

入门:无导出权限则隐藏导出按钮

text
隐藏条件(作用在「导出」按钮):
  权限  不包含  goods:info:export
  → 条件成立则隐藏

或写成「包含导出权才显示」,注意与「条件成立后状态」选项一致,见隐藏条件

入门:非店长禁用金额

text
禁用条件(作用在「金额」):
  角色  不包含  merchant:store:manager
  → 成立则禁用

常用:有审核角色才显示审批区

审批意见、审批结果整块:仅当角色包含「审核管理员」时显示;隐藏条件可挂在容器或首个字段上,用大纲检查结构。

常用:权限 + 业务字段组合

text
显示「特批说明」当:
  (权限包含 special:approve)
  AND
  (申请金额 大于 10000)

条件组表达。

常用:收银员只读、店长可改

同一「折扣率」字段:角色不包含店长 → 禁用;店长可编辑。比维护两套表单更简便。

在计算公式中使用

内置高阶函数(需环境已注入当前用户授权):

函数含义示例含义
HAS_PERMISSION("编码")是否拥有该权限有导出权则为真
HAS_ROLE("编码")是否拥有该角色是店长则为真

可与 IF 等组合,用于计算字段或更复杂的布尔结果,再被联动或其它逻辑引用。

text
HAS_PERMISSION("goods:info:export")


IF(HAS_ROLE("platform:admin:super"), 1, 0)

更多函数见使用计算公式

公式中的 HAS_PERMISSION

验收清单

检查项预期
树已配置条件可选权限 / 角色
注入有值有权账号看见按钮,无权账号隐藏 / 禁用
标识一致树节点、注入列表、公式参数同一编码
预览与正式同一套注入逻辑
与忽略隐藏字段隐藏后提交策略符合表单配置

注意点

  • 前端权限只改善体验与误操作,不能替代服务端鉴权
  • 不要把权限树当成「当前用户权限」;必须单独写入当前用户授权列表。
  • 角色与权限选一种主模型即可,避免同一按钮两套互相冲突的条件。
  • 公式里的字符串编码需与树节点标识完全一致(含冒号、大小写)。
  • 若用变量控制禁用,见变量绑定;标准权限判断优先本文条件 / 公式。

相关阅读

相关技术文档