advanced
Middleware
Запускайте edge-логику для redirects, rewrites, проверок auth, заголовков и лёгких routing-решений.
Middleware выполняется на Edge до route handler или page. Подходит для redirects, rewrites, лёгких auth gates, locale negotiation и заголовков — не для тяжёлых запросов к БД или долгого CPU.
// middleware.ts
export function middleware(request: NextRequest) {
if (!request.cookies.get('session')) {
return NextResponse.redirect(new URL('/login', request.url));
}
}
export const config = { matcher: ['/dashboard/:path*'] };
Matcher ограничивает пути, платящие за middleware. Edge runtime отличается от Node route handlers.
На интервью: middleware против route handlers и auth checks на уровне layout.
Типовые ошибки: полная валидация сессии с удалённой БД на каждый asset, широкий matcher, middleware как BFF.
Компромисс: ранний контроль запроса против ограничений runtime и cold start на edge.
Чеклист:
- Быстрый middleware и узкий matcher.
- Redirect/rewrite до дорогой работы.
- Тяжёлую логику — в handlers или server actions.
- Явно тестируйте cookies и headers.