Next.js 16 提供了一套“轻量又强大”的鉴权体系:
以 Middleware(边缘运行) 进行访问控制,
以 Server Components + Server Actions 处理认证逻辑,
以 Auth.js v5 实现现代身份认证流。
鉴权逻辑尽量前移(Middleware) 认证逻辑尽量后移(Server Actions) Session 在 Cookie 中管理(HttpOnly、安全)
Middleware 是 Next.js 在边缘执行的轻量函数,用于:
但必须注意:Middleware 在 Edge Runtime 执行。
Middleware 不适合做数据库查询、重逻辑、写操作。
因为 Edge 环境不支持 Node.js 的模块,也不适合运行长耗时逻辑。
在 Next.js 16 中,这一点仍然是官方推荐。
middleware.ts 位于项目根目录:
// middleware.ts
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
export function middleware(req: NextRequest) {
const token = req.cookies.get("session")?.value;
if (!token && req.nextUrl.pathname.startsWith("/dashboard")) {
return NextResponse.redirect(new URL("/login", req.url));
}
return NextResponse.next();
}
// 可选:匹配范围控制
export const config = {
matcher: ["/dashboard/:path*"],
};