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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:24:05