Next.js 16 提供了一套“轻量又强大”的鉴权体系:

Middleware(边缘运行) 进行访问控制,

Server Components + Server Actions 处理认证逻辑,

Auth.js v5 实现现代身份认证流。

鉴权逻辑尽量前移(Middleware) 认证逻辑尽量后移(Server Actions) Session 在 Cookie 中管理(HttpOnly、安全)

1. Middleware(middleware.ts)

Middleware 是 Next.js 在边缘执行的轻量函数,用于:

但必须注意:Middleware 在 Edge Runtime 执行。

Middleware 不适合做数据库查询、重逻辑、写操作。

因为 Edge 环境不支持 Node.js 的模块,也不适合运行长耗时逻辑。

在 Next.js 16 中,这一点仍然是官方推荐。


1.1 基本结构

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*"],
};