You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Strapi用户注册时将自定义字段设为必填项

解决Strapi用户注册时nickname字段必填的问题

你遇到的问题核心是:Strapi自带的users-permissions插件默认注册流程只校验系统原生字段(如username、email、password),即便你在User集合的schema里设置了nickname为必填,插件也不会自动将其纳入注册校验逻辑。下面是两种可行的解决方案:

方法一:通过后台配置添加注册校验参数

这是最简便的方式,适合无需额外复杂逻辑的场景:

  • 登录Strapi后台,进入设置 -> Users & Permissions 插件 -> 高级设置
  • 在注册参数区域,找到nickname字段,勾选它的必填选项
  • 保存配置后,再次调用/api/auth/local/register接口时,会强制校验请求体中是否包含符合规则的nickname字段

方法二:自定义注册控制器(灵活扩展)

如果需要对nickname做更复杂的校验或额外处理,可以覆盖插件的注册控制器:

  1. 在项目根目录创建文件src/extensions/users-permissions/controllers/auth.js
  2. 写入以下代码:
const authController = require('@strapi/plugin-users-permissions/server/controllers/auth');

module.exports = {
  async register(ctx) {
    const { nickname } = ctx.request.body;

    // 自定义校验逻辑:检查nickname是否存在且长度符合要求
    if (!nickname) {
      return ctx.badRequest('nickname字段为必填项');
    }
    if (nickname.length < 6) {
      return ctx.badRequest('nickname长度不能少于6个字符');
    }

    // 调用插件原有的注册逻辑
    const result = await authController.register(ctx);
    return result;
  },
};
  1. 重启Strapi服务,此时注册接口会先执行你自定义的校验逻辑,再完成注册流程

补充说明

你已经在User集合的schema中设置了nickname的required: true,数据库层面会自动校验该字段非空,结合上面的接口校验,就能确保注册时nickname必须传入且符合规则;如果使用方法一,建议保持后台配置的校验规则和schema中的规则一致(比如minLength)。

内容的提问来源于stack exchange,提问作者Ballazx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 02:32:04