如何在NextAuth.js中处理登录失败无报错、页面刷新问题?
你当前写法无法捕获登录凭证错误的核心原因是:当你给signIn方法配置redirect: false时,只有网络请求失败等系统级异常才会进入catch回调,账号密码错误这类业务层面的登录失败不会抛出异常,而是会作为signIn的返回结果携带在返回值中。
修正后的代码如下:
signIn("credentials", { ...values, redirect: false, }) .then(async (result) => { // 验证是否登录成功 if (result.ok) { await router.push("/dashboard"); return; } // 登录失败触发错误提示 toast("账号或密码不匹配", { type: "error" }); }) .catch((e) => { // 仅处理网络异常等意外错误 toast("登录请求出现异常,请稍后重试", { type: "error" }); });
如果你需要针对不同错误类型返回不同提示,也可以读取result.error字段判断错误类型,比如值为CredentialsSignin就代表凭证校验失败。
内容的提问来源于stack exchange,提问作者Md Yousuf Ali
相关产品推荐
相关产品推荐

