Skip to content

角色资源授权 ★ ​

一句话:本页回答「这个角色到底能干什么」——给角色逐条配置「对哪个资源、做什么动作、允许还是拒绝、能看到哪些行、哪些字段」。它是本项目定制权限体系(资源 → 授权 → 规则)的操作中枢。

★ 定制功能

上游开源版只有「菜单权限 + 数据范围」两件套;本项目把它重做为资源树 + 动作词表 + 行过滤规则 + 字段模式四层模型。本页及其配套的权限规则、权限资源、权限诊断在上游文档里查不到,以本篇为准。

功能在哪 ​

  • 入口:系统管理 → 组织权限 → 角色管理 → 行内「资源授权」(见角色管理)
  • 地址栏路由:/system/role/grant?roleId=<角色编号>(隐藏路由,不在菜单里)
  • 不带 roleId 直达会看到空态提示:「缺少角色参数,请从角色管理页的『资源授权』进入」

授权编辑列表:角色「文档-行级权限销售」的 68 条授权行(租户管理员视角)

界面认识 ​

区域作用常用操作
角色头条返回按钮 + 角色名 + 角色编码确认自己没授错角色
查询区权限标识 / 动作 / 效果 / 资源名称 / 到期时间 五个服务端筛选「搜索」「重置」;权限标识框回车即搜
工具条「切换智能查看」「新增授权」「批量授权」「批量删除(N)」前三个两种视图都在;批量删除仅列表视图
授权列表一授权一行行内「编辑」「删除」

列表各列含义:

列含义
资源名称 / 权限标识授到了哪个资源;标识形如 system:user:query
动作查看 / 新增 / 修改 / 删除 / 导出 / 导入 / … 或 * 全部动作
效果允许(绿)/ 拒绝(红)。拒绝是显式否决,优先级最高
行过滤规则三态:挂了规则名 = 只看规则放行的行;不受限(全部行) = 数据集但没挂规则;- = 菜单/按钮类资源,没有「行」的概念
字段模式可编辑 / 只读 / 隐藏;只对「列/字段」类资源有意义,其余显示 -
到期时间永不过期 或具体时刻;过期后状态列变「已过期」,授权自动失效
状态生效中 / 已过期

两种视图:编辑列表 与 智能查看 ​

工具条「切换智能查看」把列表换成一张只读的权限地图(再点「切换编辑列表」换回)。两者解决不同问题:

  • 编辑列表:管「配了什么」——增删改授权行;
  • 智能查看:管「实际生效什么」——把角色级授权沿资源树剪枝合并成一棵树,一眼看出「哪片子树整片没权限」。

智能查看:权限地图(租户管理员视角)

地图顶部那句汇总是读图钥匙,例如「共 46 个资源、81 项生效动作:其中 4 项继承自上级、12 项来自全员默认;另有 23 个资源属『默认放行(未配置)』已收起,均未计入」——它把藏起来的东西明说出来,避免把「树上剩 46 行」误读成「角色只有 46 项权限」。

地图工具条:

控件作用
筛选框客户端剪枝:按资源名称或权限标识过滤,右侧同时报「命中 N 个(全量 M 个)」
显示默认放行(未配置)把「没配但默认允许」的资源也画进来
显示字段级资源(列 / 字段)把列/字段级节点画进来
展开全部 / 收起全部整棵树展开态切换
刷新重新求值

地图各列:资源名称(树)/ 权限标识 / 生效动作(标签串,+3 表示还有三个,悬浮看全)/ 权限来源(本资源已配置 = 角色自己的授权;全员默认拥有 = 平台默认放行;路径节点 = 只是祖先路径)/ 行过滤规则 / 字段模式 / 到期时间 / 状态。

智能查看的口径比「用户实际能做的」窄

它只按角色维度求值:本角色 + 它继承的上级角色 + 全员主体;不含用户级 / 岗位 / 部门 / 用户组授权。所以「地图上没有」不等于「用户做不到」;要查某个具体用户的最终结论,用权限诊断。

常用操作 ​

新增一条授权 ​

  1. 点「新增授权」,右侧滑出授权抽屉;
  2. 在左侧资源树里点选目标资源(搜索框可按名称/标识找;勾「显示字段级资源」才能选到列/字段);
  3. 选「动作」——可选项随资源类型变化(流程/分类才开放 发起/设计/管理/查看全部);
  4. 选「效果」允许或拒绝;
  5. 资源是数据集时才能选「行过滤规则」(见权限规则);资源是列/字段时才能选「字段显示模式」;
  6. 可选「到期时间」,点「确定」。

新增授权抽屉:左资源树 + 右动作/效果/规则/字段/到期(抽屉穿透,背后列表仍可点)

结果:列表多出一行,状态「生效中」。同「主体+资源+动作」已存在时是覆盖更新,不会产生重复行。

抽屉是「非模态穿透」的:背后的列表不变暗、还能点

这是刻意设计——一边配授权、一边回头查「这个权限标识已经授过什么」。因此抽屉开着时,「新增授权/批量授权/编辑/删除/批量删除」会被禁用(防止静默替换你填了一半的内容),而搜索、翻页、勾选、切换视图保持可用。

抽屉不会因 Esc 关闭,也不是 bug

穿透模式下操作者的手在背后列表上核对,随手按 Esc 会毁掉填了一半的表单。关闭入口只有两个:右上角 × 与底部「取消」。左缘还有拖拽柄可调整抽屉宽度。

批量授权 ​

  1. 点「批量授权」,滑出批量抽屉;
  2. 在资源树里多选目标资源(节点上有「全选下级(N)/取消下级(N)」);
  3. 选「动作」(可多选,一次开「查看+新增+修改+删除」);
  4. 选「效果」,可选「行过滤规则」「到期时间」(对整批生效);
  5. 点「确定」。

批量授权抽屉:资源多选 + 动作多选 + 整批规则/到期

结果:提示 授权完成:新增 N 条、覆盖 M 条。

撞上既有授权时会先问「保留还是覆盖」

同「主体+资源+动作」已有行时弹三态确认:保留既有配置(本次没填的字段沿用旧值)/ 按本次填写覆盖(把旧的规则/字段模式一并清空)/ 放弃提交。整批操作前先看一眼这个弹窗报的条数。

覆盖度是建议,不是拦截

数据集绑行过滤规则时,若当前账号查不到槽位映射,会给一条黄色提醒「无法核对槽位覆盖度…缺槽位的数据集绑上规则后会一行都查不出来」。提交按钮不会因此禁用——平台认为操作者可能比前端更清楚那张表的实际情况。

编辑 / 删除授权 ​

  • 编辑:行内「编辑」,抽屉回填,改完「确定」(同槽位覆盖更新);
  • 删除:行内「删除」确认;或勾选多行后「批量删除(N)」。

删除立即生效于下次鉴权

被删授权对应的能力,用户下次登录即失去。删前用智能查看确认这片子树是否还有别的来源兜底。

用智能查看找缺口 ​

  1. 切到智能查看;
  2. 展开关心的子树,看「权限来源」列:路径节点 = 这条只是路过的祖先,本身没配权限;
  3. 发现整片缺权限 → 不用切回列表,直接点「新增授权/批量授权」就地补(抽屉穿透,树还看得见);
  4. 补完点「刷新」复核。

字段说明 ​

「动作」词表(★ 定制,全站统一):

动作含义开放范围
* 全部动作通配该资源所有动作全部资源
查看 VIEW读:进页面、查列表、看详情全部资源
新增 CREATE / 修改 UPDATE / 删除 DELETE写三件套全部资源
导出 EXPORT / 导入 IMPORT / 打印 PRINT批量进出与打印全部资源
发起 START / 设计 DESIGN / 管理 MANAGE / 查看全部 VIEW_ALL流程专属仅 流程 / 分类 资源
被引用查询 REFERENCE被别的模块引用时的查询权全部资源

「预留动作」配了也不生效——但有一个例外口径

CREATE/UPDATE/DELETE/EXPORT/IMPORT/PRINT/REFERENCE 在未折叠的资源族里是预留位:配上去界面照存,但鉴权不读它们(选到这类动作时抽屉里会给一句常驻警告,别以为是配错了)。例外是在线表单这类按「权限标识带操作词」折叠的资源族:...:create、...:delete 等本身就是独立资源,鉴权查的是「这些资源 + 动作=查看」,所以在那一族里它们是生效的。新发布的在线表单更彻底:七个动词不再各自成行,而是收在数据集行的授权「动作」列里(权限资源里只有一个数据集节点),此时配 CREATE 就是配「数据集行 + 动作=新增」,同样生效;但它的菜单可见性要另授同名的「菜单」行,见从零搭建一个应用第 5 步。判断某资源族走哪条口径,看权限资源里它是「一个数据集 + 若干操作子资源」还是「一列平铺的按钮资源」。

字段必填说明
资源是资源树单选;换资源后动作/规则会被重置为合法值
动作是见上表
效果是允许 / 拒绝;拒绝优先于任何允许
行过滤规则否仅数据集类资源可选;见权限规则
字段显示模式否仅列/字段类资源可选:可编辑 / 只读 / 隐藏
到期时间否不填 = 永不过期

视角对照 ​

视角看到什么
超管 admin / 租户管理员 docadmin完整授权页,可增删改
只有 system:grant:query 的角色能看列表与地图,但「新增/批量/编辑/删除」按钮不出现
普通员工 salesman01无入口;直达路由 403

授权效果的对照在业务页上看

给 docsales 的角色挂了行过滤规则后,它登录在线表单「校验示例4-唯一性长度与脱敏」时行数从 8 变 2、联系邮箱整列消失、联系手机置灰——「配了什么」与「看到什么」的逐步对照,见场景教程配置行级数据权限。

进阶 ​

  • 权限规则:行过滤规则的定义处(模板 + 参数);
  • 权限资源:资源树与默认效果的维护处,「明细设计」可反向看某资源授给了哪些角色;
  • 权限诊断:排查「某人为什么有/没有这个权限」;
  • 角色管理:角色壳子与成员;租户套餐:角色能授的菜单不超过套餐白名单。

常见问题 ​

Q:直达 /system/role/grant 只看到一句提示? A:缺 roleId 参数。从角色管理行内「资源授权」进入,它会带上角色编号。

Q:智能查看里某菜单「不在树上」,但用户实际能点? A:地图只算角色级授权。用户级/岗位/部门/用户组授权、以及「默认放行(未配置)」的资源默认收起——勾上「显示默认放行」再看,或用权限诊断查最终结论。

Q:批量授权弹窗问「保留既有配置 / 按本次填写覆盖 / 放弃提交」,选哪个? A:想只改本次填了的字段、旧值不动 → 保留;想把整批统一到本次填写(旧规则/字段模式会被清空)→ 覆盖;发现选错资源 → 放弃。

Q:为什么「行过滤规则」下拉是灰的? A:所选资源不是数据集类。行过滤按物理表反查 DATASET 资源,菜单/按钮上没有「行」的概念。

Q:授权配了 CREATE,用户还是不能新增? A:CREATE 目前是预留动作,鉴权链路只读 VIEW 等生效动作与菜单/按钮权限。按钮显隐走菜单授权,见本页动作词表的 info 框。