Вопрос проверяет понимание концепции middleware в Next.js — функций, которые выполняются до обработки запроса и позволяют модифицировать ответ, перенаправлять пользователя или выполнять логику аутентификации.
Middleware в Next.js — это код, который выполняется на edge-сервере (или Node.js) перед тем, как запрос достигнет вашей страницы или API-роута. Он часто используется для аутентификации, проверки прав доступа, перезаписи URL-путей, работы с cookies и локализации.
Middleware работает как промежуточный слой (middle layer) между входящим запросом и вашим приложением.
Распространенные сценарии использования:
Аутентификация и авторизация:
Проверка JWT-токена из cookie или заголовка.
Перенаправление неавторизованных пользователей на страницу логина.
// middleware.js
import { NextResponse } from 'next/server';
export function middleware(request) {
const token = request.cookies.get('auth-token');
if (!token) {
return NextResponse.redirect(new URL('/login', request.url));
}
// Если токен есть, пропускаем запрос дальше
return NextResponse.next();
}Локализация (i18n):
Определение языка пользователя и перенаправление на соответствующий поддомен или путь (/en/about, /ru/about).
Защита роутов:
Блокировка доступа к админ-панели для пользователей без прав.
Проверка CORS для API-роутов.
A/B-тестирование и перенаправления:
Показ разных версий страницы разным пользователям based on cookies или других параметров.
Логирование и аналитика:
Запись информации о запросах.
Технические детали:
Middleware работает на Edge Runtime по умолчанию (более быстрый, но с ограничениями) или на Node.js Runtime.
Файл middleware должен называться middleware.js и располагаться в корне проекта или в папке src.
Можно настраивать matchers для фильтрации запросов, к которым применяется middleware.