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

修改Strapi默认用户模型后,移除密码字段仍提示必填的问题

问题原因及解决步骤

移除schema.json里的password字段后仍提示必填,核心原因是Strapi的Users-Permissions插件自带大量硬编码的密码校验逻辑——不光是数据模型,插件的控制器、服务、管理端表单都默认依赖password字段,只修改schema根本无法覆盖所有校验点。

你需要修改以下几个关键部分:

  • 扩展插件的用户创建控制器
    在src/extensions/users-permissions/server/controllers/user.js里重写create方法,去掉对password字段的必填校验,同时删掉密码加密相关逻辑(比如原方法里的hashPassword调用、params.password存在性检查)。

  • 替换管理端的用户表单组件
    管理控制台的用户创建表单是插件内置的,默认会渲染密码输入框并标记为必填。你需要在src/admin/src/components/UserForm目录下创建自定义组件,复制原插件的UserForm代码后移除密码相关输入项,再在src/admin/src/app.js里注册该组件替换掉默认表单。

  • 调整用户服务层逻辑
    在src/extensions/users-permissions/server/services/user.js中,修改create和update方法,删除所有与password相关的校验、加密步骤,确保创建/更新用户时不再校验该字段。

  • 同步数据库结构
    修改schema.json后,需要让Strapi同步数据库:运行strapi db:migrate生成迁移文件并执行,或者直接在数据库的user表中删除password字段(推荐用迁移方式更规范)。

额外注意:Users-Permissions插件默认的/api/auth/local登录端点是基于密码设计的,你需要禁用该端点,同时自行实现OTP登录接口(比如新增/api/auth/otp端点,处理验证码发送、验证逻辑)。

内容的提问来源于stack exchange,提问作者U. Watt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:42:05