Middleware działa przed obsługą route (często na edge) i może robić redirect/rewrite (np. locale routing, bramki auth). Powinno być lekkie i ma ograniczenia runtime względem pełnego Node.js (nie wszystkie API są dostępne).
Next.js Middleware uruchamia się *przed* logiką route/page i często działa na edge. Jest dobre do rzeczy, które muszą wykonać się wcześnie na poziomie requesta:
// middleware.ts
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
export function middleware(req: NextRequest) {
const loggedIn = Boolean(req.cookies.get('session'))
if (!loggedIn && req.nextUrl.pathname.startsWith('/admin')) {
const url = req.nextUrl.clone()
url.pathname = '/login'
return NextResponse.redirect(url)
}
return NextResponse.next()
}