【问题标题】:Next.js cookies aren't coming through on router middlewareNext.js cookie 没有通过路由器中间件
【发布时间】:2022-08-14 18:07:40
【问题描述】:

我正在尝试使用新的 Next.Js 12 中间件功能创建一些路由保护。我的身份验证基于在 cookie 上设置的 JWT 令牌。我之前使用 Next.Js 上的 API 后端实现了这一点,没有任何问题,并且仍然在点击 API 路由时,cookie 将在请求上持续存在,没有问题。

当它从服务器请求静态页面时出现我的问题。没有附加 cookie,因此我无法确定用户是否经过身份验证并始终重定向到登录页面。因此,例如对http://localhost:3000/(主页)的请求不会向中间件发送任何cookie。但是,http://localhost:3000/api/user 会向中间件发送一个 cookie。文档中是否有我遗漏的设置以允许这种情况发生?

不确定是否有帮助,但这是我位于页面根目录的_middleware.ts 文件。

import type { NextFetchEvent, NextRequest } from \'next/server\';
import { NextResponse } from \'next/server\';

const middleware = (req: NextRequest, ev: NextFetchEvent) => {
  console.log(req.cookies);
  console.log(req.cookies[\'user\']);
  console.log(req.nextUrl.pathname);
  if (req.nextUrl.pathname === \'/\') {
    return NextResponse.redirect(\'http://localhost:3000/login\');
  }
};

export default middleware;
  • 你能分享你的 _middleware.js 代码吗
  • @Yilmaz目前不确定它有多大帮助,只是调试代码,但我现在已将其包含在主要问题正文中。
  • 因此,对主页/ 的请求将具有未定义的cookie 用户,但对/api/user 的请求将附加一个cookie。

标签: cookies next.js middleware


【解决方案1】:

我有同样的问题。我使用标签进行路由,它可以工作,但我不确定这是一个不错的选择。

【讨论】:

    猜你喜欢
    • 2020-05-19
    • 2019-09-22
    • 2021-12-10
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多