5***@qq.com
5***@qq.com
  • 发布:2026-07-07 11:58
  • 更新:2026-07-07 13:43
  • 阅读:36

uni-admin 管理员登录时提示The "hmac" argument must be of type string. Received null

分类:uni-app

看了很多帖子,包括目前我们社区已有的2个帖子,改了都不行
大大们,这个具体怎么解决呢
万分感谢

图片是我看着别人改的,还是不行

2026-07-07 11:58 负责人:无 分享
已邀请:
Ask小助手

Ask小助手

欢迎到专业群( uni-admin技术交流群 ) 咨询,群中有相关专业的管理员和群友。

这个错误 the "hmac" argument must be of type string. received null 通常是因为 uni-id 配置中的 passwordsecret 或相关密钥缺失或未正确初始化,导致在加密密码时 hmac 函数收到了 null 值。

结合你的情况(参考别人修改后仍不行),以及知识库和社区中的常见案例,我为你整理了最有效的排查和解决步骤:

1. 检查并正确配置 passwordsecret(最关键)

这是最常见的原因。你的 uni-config-center/uni-id/config.json 文件中很可能缺少 passwordsecret 字段,或者它的值被误删、设置为了 null

  • 操作步骤
    1. 在 hbuilderx 中,找到你的 uni-admin 项目。
    2. 进入 uniCloud/cloudfunctions/common/uni-config-center/uni-id/config.json 文件。
    3. 检查 passwordsecret 字段。它必须是一个字符串类型的非空值。
    4. 特别注意:如果你是从其他地方拷贝的配置,请不要直接粘贴一个简单的字符串,因为 passwordsecret 的修改有严格要求,不当修改会导致所有用户密码失效。如果你不确定,最好的方式是:
      • 如果你之前有过能正常登录的配置,恢复那个配置。
      • 如果是全新的项目,确保 passwordsecret 字段存在且为一个复杂的字符串(如 "my-complex-secret-2024")。
    5. 修改后,必须重新上传 uni-config-center 公共模块(或者包含该配置的云函数)到云端。

2. 检查云函数/云对象是否完整上传

有时,配置虽然正确,但云端代码没有更新成功。

  • uniCloud/cloudfunctions 目录下,找到处理登录的云对象(通常是 uni-id-co)。
  • 右键点击该云对象,选择 “上传部署”,确保云端代码是最新的。

3. 确认服务空间关联与配置一致性

如果你的 uni-admin 项目关联了多个云服务空间,或者与其他项目共用了同一个空间,可能会导致配置互相覆盖,引发错乱。

  • 在 hbuilderx 中,右键点击 uniCloud 目录,选择“选择云服务空间”,确认当前绑定的空间是你正在使用的那个。
  • 确保你修改的配置和上传的云函数,都是针对这个正确的服务空间。

4. 重置管理员账号(作为最后的验证)

如果以上步骤确认无误但问题依旧,可以尝试重置管理员账号,以确保数据库中的密码与当前配置匹配。

  • 方案一:前往 uniCloud web 控制台的云数据库,找到 uni-id-users 表,将 role 字段包含 "admin" 的用户的 role 字段暂时改为空数组 []。然后重新访问 uni-admin 登录页,页面底部会出现“注册超级管理员”的链接,重新注册一个管理员。
  • 方案二:在 uni-id-users 表中,先注册一个普通账号,然后复制这个普通账号的 password 字段值,去覆盖 admin 账号的 password 字段值,完成密码重置。

5. 检查支付宝云的特殊情况

如果你使用的是支付宝云服务空间,还需要注意支付宝云对数组字段的兼容性问题。请确保 uni-id-users 表中 role 字段已正确创建索引。

  • 在 uniCloud web 控制台的云数据库,找到 uni-id-users 表。
  • 检查 role 字段的索引类型,确保它是 array 类型的索引。如果没有,需要手动添加,否则 role 字段的查询可能会失败,间接导致后续逻辑异常。

如果以上步骤都无法解决你的问题,建议前往 uni-admin 技术交流群 咨询,群内有更专业的管理员和群友可以协助你排查。

内容为 AI 生成,仅供参考
5***@qq.com

5***@qq.com (作者) - 我是开发者

可以啦,万分感谢! 按照您说的,我从上往下,执行到4-方案一

然后就行了!

要回复问题请先登录注册