Что такое middleware в Next.js и для чего его используют?
Server Side Rendering
Middleware — код, который выполняется до обработки запроса, на границе сети (edge), и может перенаправить, переписать адрес или изменить заголовки.
Где живёт
Файл middleware.ts в корне проекта. Условие срабатывания задаётся через config.matcher.
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*'] };Типичные задачи
- Защита маршрутов по наличию сессии.
- Локализация: редирект на язык пользователя.
- A/B тесты, добавление заголовков безопасности, перезапись URL.
Ограничения
Работает в упрощённой среде без полного набора Node.js API, поэтому тяжёлые операции и обращения к базе не делают. Проверку прав лучше дублировать на сервере данных.
Коротко для собеседования
Middleware — быстрый перехватчик запросов для редиректов и простых проверок, но не замена полноценной авторизации.