字段级访问控制

字段访问控制是访问控制的一种,用于限制对文档中特定字段的访问。

要为字段添加访问控制,请在字段配置中使用 access 属性:

import type { Field } from 'payload'

export const FieldWithAccessControl: Field = {
  // ...
  access: {
    // highlight-line
    // ...
  },
}

注意: 字段访问控制不支持像集合访问控制那样返回查询约束。

配置选项

访问控制针对请求的具体操作进行配置。

要为字段添加访问控制,请在字段配置中使用 access 属性:

import type { CollectionConfig } from 'payload';

export const Posts: CollectionConfig = {
  slug: 'posts',
  fields: [
    {
      name: 'title',
      type: 'text',
      // highlight-start
      access: {
        create: ({ req: { user } }) => { ... },
        read: ({ req: { user } }) => { ... },
        update: ({ req: { user } }) => { ... },
      },
      // highlight-end
    };
  ],
};

可用选项如下:

函数用途
create控制创建新文档时是否允许设置字段值。更多详情
read控制是否允许读取字段值。更多详情
update控制是否允许更新字段值。更多详情

Create

返回一个布尔值,用于控制是否允许在创建新文档时设置字段值。如果返回 false,则所有传入的值将被丢弃。

可用参数属性:

选项描述
req包含当前认证用户信息的 Request 对象
data创建文档时传入的完整数据
siblingData创建文档时传入的相邻字段数据

Read

返回一个布尔值,用于控制是否允许读取字段值。如果返回 false,则该字段会从结果文档中完全省略。

可用参数属性:

选项描述
req包含当前认证用户信息的 Request 对象
id正在读取文档的 id
doc完整的文档数据。
siblingData正在读取文档的相邻字段数据。

Update

返回一个布尔值,用于允许或拒绝更新字段值。如果返回 false,任何传入的值都将被丢弃。

如果返回 false 但仍尝试更新字段值,操作不会抛出错误,但该字段将从更新操作中排除,值将保持不变。

可用参数属性:

OptionDescription
req包含当前认证用户 userRequest 对象
id正在更新的文档 id
data用于更新文档的完整数据
siblingData用于更新文档的相邻字段数据
doc更新前完整的文档数据