MOU 数据权限
为对象配置查询、编辑、删除三个阶段的数据权限过滤(即行级过滤)规则,控制不同用户能看到和操作哪些数据。
概述
MOU 数据权限(对象设置 → 「MOU数据权限」卡片)又称对象数据权限、行级数据权限,用于在对象维度对数据做行级过滤(权限过滤)。开启后,访问该对象数据时会自动追加过滤条件,用户只能看到和操作符合规则的数据。
MOU 数据权限按数据操作阶段拆分为三组,可分别启用、分别选择过滤模式:
| 阶段 | 作用 |
|---|---|
| 查询 | 控制查询列表、查询单条时的可见数据范围 |
| 编辑 | 控制编辑数据时的可操作数据范围 |
| 删除 | 控制删除数据时的可操作数据范围 |
在接口编排中放置的 MOU数据权限组件 优先级最高,会覆盖对象设置中的 MOU 配置。
配置项
| 配置项 | 说明 |
|---|---|
| 启用查询数据时的MOU数据权限过滤 | 打开后,查询阶段按所选规则过滤数据 |
| MOU数据权限过滤模式 | 查询/编辑/删除各自独立选择,决定过滤规则,见下方模式表 |
| MOU数据权限过滤匹配字段 | 仅部分模式需要,选择用于匹配的字段 |
| 自定义权限数据源接口 | 仅「某字段值在自定义权限接口返回的数组中」模式需要 |
| 查询单条时允许跳过MOU数据权限过滤 | 查询单条详情时跳过过滤,但查询列表仍过滤 |
| 启用编辑数据时的MOU数据权限过滤 | 打开后,编辑阶段按所选规则过滤数据 |
| 启用删除数据时的MOU数据权限过滤 | 打开后,删除阶段按所选规则过滤数据 |
| 启用指定部分人员可查看全部数据 | 指定人员可跳过 MOU 过滤,优先级高于查询 MOU 过滤 |
| 指定人员配置 | 仅上一项开启时出现,选择可查看全部数据的人员范围 |
数据权限过滤模 式
过滤模式为字符串枚举值,三组阶段各自维护一份配置。取值与含义如下:
| 存储值 | 含义 | 是否需要匹配字段 | 是否需要自定义接口 |
|---|---|---|---|
0 | 系统默认(基于组织架构+数据权限) | 否 | 否 |
1 | 当前登录人创建的数据 | 否 | 否 |
2 | 当前登录人编辑的数据 | 否 | 否 |
3 | 当前登录人创建或编辑的数据 | 否 | 否 |
10 | 当前登录人所在组织的数据 | 否 | 否 |
40 | 某人员字段值=当前登录人的数据 | 是 | 否 |
41 | 某人员多选字段值包含当前登录人的数据 | 是 | 否 |
50 | 某字段值在自定义权限接口返回的数组中 | 是 | 是 |
60 | 所有用户默认禁止查询数据 | 否 | 否 |
40 / 41 的匹配字段这两个模式用于「数据的某个人员字段」与当前登录人比对。选择匹配字段时,字段选择器会自动过滤为人员类型字段,例如数据的「负责人」「参与人」等字段。
查询阶段配置
- 打开「启用查询数据时的MOU数据权限过滤」。
- 选择「MOU数据权限过滤模式」。
- 若模式为
40、41或50,选择「MOU数据权限过滤匹配字段」。 - 若模式为
50,再选择「自定义权限数据源接口」,该接口返回的数组将与匹配字段做包含判断。 - 可选:打开「查询单条时允许跳过MOU数据权限过滤」。
「查询单条时允许跳过」适用于需要让用户能看到某条数据详情、但不允许浏览数据列表的场景:开启后,查询单条详情时不过滤,查询列表时仍过滤。
编辑与删除阶段配置
编辑、删除阶段的配置与查询阶段类似,但不包含「查询单条时允许跳过」:
- 编辑阶段:启用开关 → 选择过滤模式 → 按需选择匹配字段 / 自定义接口(
MouEnabledForEdit、MouTypeForEdit、MouTypeMatchFieldForEdit、MouInterfaceIdForEdit)。 - 删除阶段:启用开关 → 选择过滤模式 → 按需选择匹配字段 / 自定义接口(
MouEnabledForDelete、MouTypeForDelete、MouTypeMatchFieldForDelete、MouInterfaceIdForDelete)。
指定人员跳过过滤
当业务上需要让少数人(如管理员、审计人员)查看全部数据时,可开启「启用指定部分人员可查看全部数据」并配置「指定人员配置」。
指定人员配置支持多种选择维度:
| 选择维度 | 说明 |
|---|---|
| 用户 | 按具体用户选择 |
| 组织 | 按组织选择 |
| 身份 | 按身份(Profile)选择 |
| 角色 | 按角色选择 |
| 组织负责人 | 按组织负责人选择 |
| 接口人员 | 按接口返回的人员选择 |
| 系统用户 | 系统管理员、系统开发者 |
命中该配置的用户将跳过 MOU 数据权限过滤,直接查看全部数据。
下一步
属性明细
以下内容面向技术实现与 AI 检索。MOU 相关配置全部存储在对象 Properties(MetaObjectProperties)中,以 JSON 字符串落库。
配置项定义
| 属性名 | 类型 | 含义 | 取值/存储值 |
|---|---|---|---|
MouEnabledForQuery | bool | 是否启用查询阶段 MOU | true / false |
MouTypeForQuery | string | 查询阶段过滤模式 | "0" ~ "60",默认 "0" |
MouTypeMatchFieldForQuery | string | 查询阶段匹配字段编码 | 字段 Code,模式 40/41/50 时必填 |
MouInterfaceIdForQuery | string | 查询阶段自定义权限接口 Id | 接口主键,模式 50 时必填 |
MouEnabledSkipForSingleQuery | bool | 查询单条时是否跳过 MOU | true / false |
MouEnabledForEdit | bool | 是否启用编辑阶段 MOU | true / false |
MouTypeForEdit | string | 编辑阶段过滤模式 | "0" ~ "60",默认 "0" |
MouTypeMatchFieldForEdit | string | 编辑阶段匹配字段编码 | 模式 40/41/50 时必填 |
MouInterfaceIdForEdit | string | 编辑阶段自定义权限接口 Id | 模式 50 时必填 |
MouEnabledForDelete | bool | 是否启用删除阶段 MOU | true / false |
MouTypeForDelete | string | 删除阶段过滤模式 | "0" ~ "60",默认 "0" |
MouTypeMatchFieldForDelete | string | 删除阶段匹配字段编码 | 模式 40/41/50 时必填 |
MouInterfaceIdForDelete | string | 删除阶段自定义权限接口 Id | 模式 50 时必填 |
EnableDesignatedCanSkipMou | bool | 是否启用指定人员跳过过滤 | true / false |
SkipMouDesignatedConfig | string | 指定人员配置 | 高级人员选择器输出的 JSON 字符串 |
存储示例
{
"Properties": {
"MouEnabledForQuery": true,
"MouTypeForQuery": "40",
"MouTypeMatchFieldForQuery": "owner",
"MouInterfaceIdForQuery": null,
"MouEnabledSkipForSingleQuery": true,
"MouEnabledForEdit": true,
"MouTypeForEdit": "10",
"MouTypeMatchFieldForEdit": null,
"MouInterfaceIdForEdit": null,
"MouEnabledForDelete": false,
"MouTypeForDelete": "0",
"MouTypeMatchFieldForDelete": null,
"MouInterfaceIdForDelete": null,
"EnableDesignatedCanSkipMou": true,
"SkipMouDesignatedConfig": "{\"conditions\":[...]}"
}
}
后端过滤逻辑
过滤条件由 PermissionService.GetMouFilterAsync 按模式生成,核心映射如下:
switch (mouType)
{
case "1": // createdby = 当前登录人
case "2": // modifiedby = 当前登录人
case "3": // createdby = 当前登录人 或 modifiedby = 当前登录人
case "10": // organization = 当前登录人所在组织
case "40": // {匹配字段} = 当前登录人
case "41": // {匹配字段} 包含 当前登录人
case "50": // {匹配字段} IN 自定义权限接口返回值
case "60": // _id = NotExistID(等价于查不到任何数据)
case "0":
default: // organization IN (当前登录人 MOU 组织 + 自身及下级组织)
}
组合与优先级说明
- 组件级 MOU 组件优先于对象 MOU 配置:当事先由组件设置
MouFilter时,直接使用组件条件。 - 若
EnableDesignatedCanSkipMou为true且SkipMouDesignatedConfig非空,会先计算指定人员集合;当前登录人命中时跳过整个 MOU 过滤。 - 查询单条(
QuerySingle)在MouEnabledSkipForSingleQuery为true时跳过查询阶段过滤;查询列表(Query)始终按查询 阶段规则过滤。 - 最终权限条件与业务查询条件以「与(And)」关系合并。
检索关键词与相关概念
本页描述的能力在平台中也称为:对象数据权限、行级数据权限、行级过滤、权限过滤、数据权限过滤、数据行权限。相关概念包括组织架构权限、数据隔离、数据范围过滤,以及按查询 / 编辑 / 删除三阶段控制的数据操作范围。
与之相关的配置还包括:匹配人员字段的权限模式(40 / 41)、依赖自定义权限接口的权限模式(50)、指定人员跳过过滤(EnableDesignatedCanSkipMou)。接口编排链路中的组件级同类配置见 MOU数据权限组件。