middleware.ts – Interceptarea cererilor la nivel de rețea (Edge Middleware) în Next.js

Rulează cod înainte ca o cerere să ajungă la pagină, perfect pentru autentificare, redirecționări de geolocație și securitate.

Sintaxă
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';

export function middleware(request: NextRequest) {
  return NextResponse.next();
}

export const config = {
  matcher: '/dashboard/:path*',
};

Ce face middleware.ts - Interceptarea cererilor la nivel de rețea (Edge Middleware)

Fișierul middleware.ts plasat în rădăcina proiectului (sau în `src/`) se execută pe fiecare cerere HTTP care se potrivește cu filtrul `matcher`.

Rulează într-un mediu ultra-rapid Edge Runtime (bazat pe V8), având latență de milisecunde.

Este locul ideal pentru a verifica token-urile de autentificare din cookie-uri, a redirecționa utilizatorii nelogați, a adăuga antete de securitate (CSP) sau a rescrie rute bazat pe limba sau țara vizitatorului.

Exemple

Exemplul 1: Protejarea rutelor /dashboard cu verificare de token de autentificare

Oprește accesul la panou dacă lipsește cookie-ul de sesiune.

import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';

export function middleware(request: NextRequest) {
  const token = request.cookies.get('token_sesiune')?.value;

  if (!token && request.nextUrl.pathname.startsWith('/dashboard')) {
    const urlLogin = new URL('/login', request.url);
    return NextResponse.redirect(urlLogin);
  }

  return NextResponse.next();
}

export const config = {
  matcher: ['/dashboard/:path*'],
};

Ieșire în terminal

Utilizatorii fără cookie sunt redirecționați la /login înainte de încărcarea paginii.

Greșeli frecvente

  • Încercarea de a folosi module native grele Node.js (precum `fs` sau conexiuni TCP directe la baze de date) în middleware; mediul Edge Runtime nu suportă toate API-urile complete Node.js.

Comenzi înrudite