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
相关产品推荐
相关产品推荐

