Globals 访问控制

全局访问控制(Global Access Control)是用于限制对全局文档访问的访问控制,同时也控制用户在管理面板中能看到和不能看到与该全局相关的内容。

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

import type { GlobalConfig } from 'payload'

export const GlobalWithAccessControl: GlobalConfig = {
  // ...
  access: {
    // highlight-line
    // ...
  },
}

配置选项

访问控制(Access Control)是针对请求操作的具体控制。

要为Global添加访问控制,请在Global Config中使用access属性:

import { GlobalConfig } from 'payload'

const GlobalWithAccessControl: GlobalConfig = {
  // ...
  // highlight-start
  access: {
    read: ({ req: { user } }) => {...},
    update: ({ req: { user } }) => {...},

    // 仅适用于启用版本的Global
    readVersions: () => {...},
  },
  // highlight-end
}

export default Header

可用选项如下:

函数允许/拒绝访问
read用于findOne全局操作。更多详情
update用于update全局操作。更多详情

如果Global支持版本控制,则还有以下额外选项可用:

函数允许/拒绝访问
readVersions用于控制谁可以读取版本,谁不能。将自动限制Admin UI的版本查看权限。更多详情

读取控制

返回一个布尔值结果或可选的查询约束,用于根据全局配置的当前属性限制谁可以读取它。

要为全局配置添加读取访问控制,请在全局配置中使用 access 属性:

import { GlobalConfig } from 'payload'

const Header: GlobalConfig = {
  // ...
  // highlight-start
  access: {
    read: ({ req: { user } }) => {
      return Boolean(user)
    },
  },
  // highlight-end
}

read 函数接收以下参数:

选项描述
req包含当前认证用户 user请求对象

更新

返回一个布尔值结果,或者可选地返回一个查询约束,该约束基于全局配置的当前属性限制谁可以更新它。

要为全局配置添加更新访问控制,请在全局配置中使用 access 属性:

import { GlobalConfig } from 'payload'

const Header: GlobalConfig = {
  // ...
  // highlight-start
  access: {
    update: ({ req: { user }, data }) => {
      return Boolean(user)
    },
  },
  // highlight-end
}

update 函数接收以下参数:

选项描述
req包含当前认证用户 user请求对象
data用于更新全局配置的数据。

读取版本

如果 Global 启用了版本控制readVersions 访问控制函数将决定当前登录用户是否可以访问文档的版本历史记录。

要为 Collection 添加读取版本访问控制,请在 Global Config 中使用 readVersions 属性:

import type { GlobalConfig } from 'payload'

export const GlobalWithVersionsAccess: GlobalConfig = {
  // ...
  access: {
    // highlight-start
    readVersions: ({ req: { user } }) => {
      return Boolean(user)
    },
    // highlight-end
  },
}

readVersions 函数接收以下参数:

选项描述
req包含当前认证用户 user请求对象。