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

Next.js中使用Auth0修改密码脚本异常问题求助

Next.js + Auth0 修改密码功能异常求助

我在Next.js项目中基于Auth0实现修改密码功能时碰到了问题:在Auth0官网测试该功能完全正常,但本地开发环境下,明明数据库里的密码已经成功修改,却会弹出错误提示Something went wrong, please try again later,并且自动跳转到重置密码页面——我用的还是Auth0官方提供的模板。

相关脚本代码如下:

function changePassword(email, newPassword, callback) {
  const bcrypt = require('bcrypt');
  const { MongoClient } = require("mongodb");
  const client = new MongoClient('mongodb+srv://admin:' + configuration.MONGODB_PASSWORD + '@cluster0.rjwkjof.mongodb.net/?retryWrites=true&w=majority');
  client.connect(function (err) {
    if (err) return callback(err);
    const db = client.db('itbc');
    const users = db.collection('users');
    bcrypt.hash(newPassword, 10, function (err, hash) {
      if (err) {
        client.close();
        return callback(err);
      }
      users.update({ email: email }, { $set: { password: hash } }, function (err, count) {
        client.close();
        if (err) return callback(err);
        callback(null, count > 0);
      });
    });
  });
}

弹出的错误信息:

Something went wrong, please try again later

求各位有经验的开发者指点,谢谢🙏


几个排查方向供参考

  • 返回值格式问题:Auth0自定义脚本对返回值格式有要求,当前callback(null, count > 0)返回的是布尔值,试试改成返回标准格式对象,比如callback(null, { success: count > 0 }),前端可能因为返回值不符合预期判定为错误。
  • 本地Auth0配置校验:确认本地环境的Auth0客户端ID、域名、回调地址、CORS设置和官网测试环境完全一致,尤其是本地域名是否被加入Auth0的允许列表。
  • 查看Auth0真实日志:前端的错误提示是通用信息,去Auth0控制台的日志面板看具体错误详情,脚本里的隐性报错(比如MongoDB连接超时、权限问题)都会在这里记录。
  • 异步逻辑优化:当前用嵌套回调写法,client.close()的时机可能存在风险,改用async/await重构脚本,能避免异步执行顺序问题,也更易调试:
    async function changePassword(email, newPassword, callback) {
      const bcrypt = require('bcrypt');
      const { MongoClient } = require("mongodb");
      let client;
      try {
        client = new MongoClient('mongodb+srv://admin:' + configuration.MONGODB_PASSWORD + '@cluster0.rjwkjof.mongodb.net/?retryWrites=true&w=majority');
        await client.connect();
        const db = client.db('itbc');
        const users = db.collection('users');
        const hash = await bcrypt.hash(newPassword, 10);
        const result = await users.updateOne({ email: email }, { $set: { password: hash } });
        callback(null, { success: result.modifiedCount > 0 });
      } catch (err) {
        callback(err);
      } finally {
        if (client) await client.close();
      }
    }
    
  • 密码策略校验:确认本地输入的新密码是否符合Auth0后台设置的密码复杂度要求,虽然密码写入了数据库,但Auth0可能在脚本外部还有一层校验,不通过就触发错误提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:01:32