字段级访问控制
字段访问控制是访问控制的一种,用于限制对文档中特定字段的访问。
要为字段添加访问控制,请在字段配置中使用 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
但仍尝试更新字段值,操作不会抛出错误,但该字段将从更新操作中排除,值将保持不变。
可用参数属性:
Option | Description |
---|---|
req | 包含当前认证用户 user 的 Request 对象 |
id | 正在更新的文档 id |
data | 用于更新文档的完整数据 |
siblingData | 用于更新文档的相邻字段数据 |
doc | 更新前完整的文档数据 |