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

如何避免CLIENT_FETCH_ERROR时浏览器跳转到/api/auth/error?

解决Next-auth登录时服务器宕机自动跳转到/api/auth/error的问题

问题核心在于即使设置了redirect: false,服务器宕机时的网络错误可能触发next-auth内部的默认跳转逻辑,同时next-pwa的缓存策略也可能干扰错误处理。可以通过以下步骤解决:

1. 修正登录函数的错误处理逻辑

确保redirect: false严格生效,并在catch块中阻止默认跳转:

async function signInHandler({ username, password }: { username: string, password: string }) {
  if (!username || !password) return;

  try {
    const result = await signIn('credentials', {
      username,
      password,
      callbackUrl: props.redirect,
      redirect: false // 强制禁止自动跳转,必须设置
    });

    // 处理服务器返回的业务错误(如账号密码错误)
    if (!result?.ok) {
      setError(result?.error || '用户名或密码错误');
      return;
    }

    // 登录成功后手动跳转
    push(redirectUrl || '/');
  } catch (err) {
    // 处理网络错误(如服务器宕机)
    setError('出现问题,离线模式仍可使用');
    // 阻止浏览器默认跳转行为
    window.event?.preventDefault();
  }
}

2. 配置next-pwa排除Auth相关API缓存

避免缓存/api/auth路径的请求,确保服务器宕机时请求直接失败而非返回缓存的错误页面:

在next.config.js中修改pwa配置:

const withPWA = require('next-pwa')({
  dest: 'public',
  register: true,
  skipWaiting: true,
  exclude: [
    ({ url }) => url.pathname.startsWith('/api/auth/') // 排除Auth API的缓存
  ]
});

module.exports = withPWA({
  // 其他Next.js配置项
});

3. 检查NextAuth配置(可选)

确保[...nextauth].ts中没有强制重定向的设置,credentials provider的authorize函数仅处理业务逻辑,不要触发重定向:

export default NextAuth({
  providers: [
    CredentialsProvider({
      name: 'Credentials',
      credentials: {
        username: { label: 'Username', type: 'text' },
        password: { label: 'Password', type: 'password' }
      },
      async authorize(credentials) {
        // 仅处理账号密码验证逻辑,验证失败直接返回null或抛出错误
        if (!credentials?.username || !credentials?.password) return null;
        // 这里写你的验证逻辑
        const user = await verifyUser(credentials.username, credentials.password);
        return user || null;
      }
    })
  ],
  session: { strategy: 'jwt' },
  // 不要设置pages.error,让错误在当前页面处理
});

通过以上步骤,即可阻止服务器宕机时的自动跳转,在当前登录页面展示自定义错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:02:54