我正在尝试使用新的 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(使用前将#替换为@)