Next.js 从 API 路由重定向

Jul*_*ier 4 javascript axios next.js

我正在构建一个需要用户登录的后台应用程序。我有 2 个外部 API:

  • API A:管理用户帐户和会话
  • API B:对另一个数据库执行CRUD操作(与用户数据库无关)

问题是,如果用户的会话无效,我不希望用户能够执行对 API B 的调用。因此,我在 Next(在 下)中添加了一些 API 端点pages/api,它们执行以下操作:

  1. 根据 API A 验证会话的有效性
  2. 如果会话有效:继续步骤3,如果无效:重定向到页面/login
  3. 调用 API B

如果会话有效,则一切正常,但如果会话无效,则一切都会失败。

我努力了

res.redirect(307, '/login').end()
Run Code Online (Sandbox Code Playgroud)

res.writeHead(307, { Location: '/login' }).end()
Run Code Online (Sandbox Code Playgroud)

但没有成功。即使指定整个路径 ( http://localhost:3000/login),它也会失败。我不明白的是,/login如果我直接从浏览器发出请求( GET http://localhost:3000/api/data),我会成功重定向到我的页面。当我在 React 组件内使用 Axios 发出请求时,它不起作用。

知道我该如何解决这个问题吗?

Jul*_*ier 9

正如 @juliomalves 和 @yqlim 所解释的,我必须根据 API 的响应手动进行重定向。