用户与权限插件的 register.allowedFields 配置选项默认为 []

页面摘要: 在 Strapi 5 中,用户与权限插件的 register.allowedFields 默认为空数组,因此需要显式地将字段加入允许列表,而非默认接受所有字段。

在 Strapi 5 中,用户与权限插件的 register.allowedFields 配置选项默认为 []。

本页面是破坏性变更数据库的一部分,提供有关该破坏性变更的信息,以及从 Strapi v4 迁移到 Strapi 5 的附加说明。

代码迁移工具: use-uid-for-config-namespace

破坏性变更说明

在 Strapi v4 中

默认情况下,添加到 User 内容类型的任何新字段都会被注册表单接受,并且 Strapi 会在启动时针对每个字段发出警告。

用户可以选择在 config/plugins.js 文件中将 users-permissions.register.allowedFields 设置为他们希望在注册端点接受的字段数组。例如,[’picture’] 表示在注册时接受 picture 属性。如果不想接受其他任何字段,则设置为空数组 []。

但是,如果用户未设置任何值,即当 allowedFields 为 undefined 时,所有用户字段都会被接受。

在 Strapi 5 中

undefined 的 allowedFields 被视为空数组,默认不接收任何字段。用户必须显式选择允许在注册时使用的额外字段。

在 Strapi 5 中的工作方式

username、email 和 password 字段始终被注册端点接受。它们在用户与权限功能的源码中被硬编码为 alwaysAllowedKeys。User 内容类型上的任何其他字段都必须在 allowedFields 中显式列出,否则请求将以 400 状态和类似 "Invalid parameters: fieldName" 的错误消息被拒绝。

迁移

本节汇总了关于该破坏性变更的有用说明和操作步骤。

手动操作步骤

codemod 应会自动处理此迁移。如果没有,请参阅文档了解如何 为用户与权限插件注册允许字段。

要允许在注册时使用额外字段,请更新你的插件配置:

module.exports = {
  'users-permissions': {
    config: {
      register: {
        allowedFields: ['firstName', 'lastName'],
      },
    },
  },
};

如果你依赖 Strapi v4 的行为(默认接受所有字段),请在 allowedFields 中列出每一个额外字段。未列出的字段会被静默丢弃或拒绝。