用户与权限插件的 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 中列出每一个额外字段。未列出的字段会被静默丢弃或拒绝。