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

如何在NextAuth的signOut事件中实现页面重定向?

解决NextAuth.js signOut事件中重定向的NEXT_REDIRECT错误

问题原因

Next.js的redirect函数通过抛出NEXT_REDIRECT错误触发路由跳转,但Auth.js(原NextAuth.js)的signOut事件处理函数不会捕获该错误,直接调用会导致错误暴露。

解决方案

在客户端环境的事件处理函数中,改用浏览器原生跳转方法直接操作window.location,替代Next.js的redirect函数:

修改后的代码:

events: {
    signOut: async function ({ token }) {
      const logoutToken = token as unknown as any
      const tokenResponse = await fetch(
        `${process.env.NEXT_API_URL}/auth/logout`,
        {
          method: 'POST',
          headers: {
            'Cookie': cookieList(logoutToken),
            'Content-Type': 'application/json',
            Authorization: `Bearer ${logoutToken.accessToken}`,
          },
        },
      );
      const json = await tokenResponse.json()
      // 替换redirect,用原生浏览器跳转
      window.location.href = json.url; // 根据后端实际返回的URL字段名调整,比如可能是redirectUrl
    },
  },

补充说明

  • 若需跳转后不保留当前页面在浏览器历史记录,可替换为window.location.replace(json.url)
  • 确认后端返回的json数据中包含正确的跳转URL字段,根据实际接口返回调整字段名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 06:32:03