Next.js cookie 无法通过路由器中间件

2023-11-24

我正在尝试使用新的 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;

Next.js > 12.2

req.cookies.get("user")

在 Next.js 12.2 之前,

req.cookies?.user
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Next.js cookie 无法通过路由器中间件 的相关文章

随机推荐

  • PHP 重定向不安全吗?

    嗯 我真的无法确定任何不安全因素 但想知道你是否可以 如果可以 如何修补 修复 代码如下 header Location http example com search POST term POST type 我重定向的网站也在他们这边进行
  • 在新的 Android Studio 3.1 上构建时出错

    我将 Android Studio 更新到 3 1 稳定版本 并在尝试构建项目时收到此错误 起初存在问题DataBinding 我修复了它们 然后我发现了这个问题 org gradle api GradleException Compila
  • 仅从 for 循环中打印一次消息

    我想查找列表元素中是否包含特定字符串 如果找到该字符串 我想打印出 找到字符串 否则 找不到字符串 但是 我想出的代码会多次打印 找不到字符串 我知道原因 但我不知道如何修复它并只打印其中一条消息一次 animals dog mouse c
  • Svg 多边形舍入

    我正在开发一个使用 svg 移动 旋转 缩放功能的应用程序 我正在 Laravel 中编写后端 前端使用 html css javascript 我在网上看到折线可能有某种三次贝塞尔曲线 现在我的问题是 多边形 svg 元素是否可能具有与折
  • Symfony2 路由全局 {_locale} 要求

    我在routing yml 中指定了每个路由中的参数 locale 要求 我认为这一定可以简化这种情况 路由 yml ProjectBaseBundle index pattern locale defaults controller Pr
  • opencv 中体积图像的 3D 图像处理

    我期待 Opencv 中 3D 图像处理的教程 我有 O Reilly 出版的书 这是一本关于 Opencv 中的 2D 图像处理的好书 谁能给我介绍一些 3D 图像处理的资源吗 本问题中的 3D 图像代表体数据 通常指 CT MRI 数据
  • node.js 只输出三个点[重复]

    这个问题在这里已经有答案了 我在 Windows 计算机上安装了 node js 并打开了命令提示符 当我尝试 Hello World 示例时 我得到的唯一输出是三个点 node hello js 我做错了什么吗 node hello js
  • C# 反射:使用字符串类名实例化对象

    我的情况如下 我正在使用 Visual C 2010 Express 开发 Windows 窗体应用程序 当用户登录时 动态地构建一个菜单条 其中包含从数据库表加载的选项 在该表中 我保存 ID 选项名称和表单名称 所以 假设在我的项目中我
  • JSF 中“记住我”的 Cookie

    我有一个登录页面 我想添加 记住我 功能 这样 如果用户注销并再次打开页面 则会加载他的用户名和密码 为此 当用户登录 并选中 记住我 时 我会保存以下 cookie FacesContext facesContext FacesConte
  • 如何打印调用的函数?

    在调试 Python 脚本时 我真的很想知道整个程序的整个调用堆栈 理想的情况是 如果 python 有一个命令行标志 它会导致 Python 在调用时打印所有函数名称 我检查过man Python2 7 但没有找到此类内容 由于此脚本中的
  • ASP.NET 中有没有本地方法可以发出“成功消息”?

    假设您有一个类似 ASP NET ASP DetailsView 的东西来显示和编辑数据库中的单个记录 记录错误情况很简单 您添加验证和验证摘要 当您的更新表单验证失败时 它自然会发出噪音 它显示验证消息和 或验证摘要 不需要任何后面的代码
  • 如何在 Windows 上使用 youtube-dl 提取音频

    我想从 Windows 上使用 youtube dl 下载的视频中提取音频 我让 youtube dl 正常工作 但无法提取音频 此问题是由于未安装正确的音频代码造成的 当我尝试提取音频时 它告诉我以下内容 WARNING unable t
  • openXML电子表格文档返回用于MVC文件下载的字节数组

    我试图以 byte 的形式返回一个 openXML 电子表格文档 然后我可以使用它来允许我的 MVC 将该文件发送给用户 这是我的电子表格文档方法返回字节数组 using MemoryStream mem new MemoryStream
  • C++ 中用 :: 限定的命名空间

    如果 C 中的命名空间被限定 这意味着什么 例如 testing Test 是范围解析运算符 它始终意味着 在全局命名空间中搜索右侧的符号 例如 namespace testing int a 1 namespace foo namespa
  • 如何使用 Python 搜索和替换 XML 文件中的文本?

    如何搜索整个xml文件中的特定文本模式 然后用 Python 3 5 中的新文本模式替换该文本的每次出现 其他所有内容 格式 属性 注释等 都需要保持原始 xml 文件中的原样 我在 Windows win32 上运行 Python 3 5
  • 在 package.json 中设置 process.env var

    我正在尝试使用 package json 设置和检索节点应用程序 process env 变量 因此通过研究问题 我找到了一个通过 配置 部分设置 检索 process env 的示例 因此我添加了一个新配置部分如下图 config var
  • 获取 Jenkinsfile 失败的错误原因

    我有以下内容post故障部分 post failure mail subject u2639 env JOB NAME env BUILD NUMBER has failed body Build env BUILD URL is fail
  • 如何将“过滤器”应用到 AVCaptureVideoPreviewLayer

    我的应用程序当前正在使用 AVFoundation 从 iPhone 后置摄像头获取原始摄像头数据 并将其实时显示在 AVCaptureVideoPreviewLayer 上 我的目标是有条件地将简单的图像滤镜应用到预览图层 图像未保存 因
  • 如何使用 Android Studio 在 firebase 中检查“用户电子邮件已存在”

    我正在尝试更改我的代码 但是 它失败了 我的输出还是一样 也就是说 如果用户输入的电子邮件已经存在或不存在 验证 此电子邮件已被注册 还是出来了 为什么 有人可以我的编码有什么问题吗 这是我的方法 public boolean isChec
  • Next.js cookie 无法通过路由器中间件

    我正在尝试使用新的 Next Js 12 中间件功能创建一些路由保护 我的身份验证基于 cookie 上设置的 JWT 令牌 我之前已经使用 Next Js 上的 API 后端实现了这一点 没有出现任何问题 并且当点击 API 路由时 co