【发布时间】: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