Next.js
Auth & Middleware
Authentication, protected route-ok és middleware használata Next.js App Router-ben.
Next.js – Auth & Middleware
A teljes Next.js jegyzet 10–11. fejezetének összefoglalója.
Authentication vs Authorization
- Authentication – ki a felhasználó? (azonosítás)
- Authorization – mit tehet? (jogosultság)
Next.js nem ad kész auth rendszert, de jól működik pl. Auth.js, Clerk, Lucia stb. library‑kkel.
Alap auth flow (összefoglalva)
- User bejelentkezik (form → Server Action vagy Route Handler).
- Szerver ellenőrzi az adatokat.
- Siker esetén session token kerül cookie‑ba.
- Következő kéréseknél middleware vagy page ellenőrzi a tokent.
Védett oldalak – page‑szinten
// app/dashboard/page.tsx
import { getSession } from '@/lib/auth';
import { redirect } from 'next/navigation';
export default async function DashboardPage() {
const session = await getSession();
if (!session) {
redirect('/login');
}
return <div>Üdv, {session.user.name}!</div>;
}Egyszerű, de ismétlődhet sok helyen – ezért jön képbe a middleware.
Middleware alapok
middleware.ts a projekt gyökerében; minden kérés előtt lefut a megadott route‑okra.
// middleware.ts
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
export function middleware(request: NextRequest) {
const token = request.cookies.get('auth-token')?.value;
const isProtected = request.nextUrl.pathname.startsWith('/dashboard');
if (isProtected && !token) {
return NextResponse.redirect(new URL('/login', request.url));
}
return NextResponse.next();
}
export const config = {
matcher: ['/dashboard/:path*', '/admin/:path*'],
};Figyelem: a middleware jó UX‑et ad (gyors redirect), de nem helyettesíti a szerver oldali ellenőrzést – az érzékeny page‑eken is ellenőrizd a session‑t.
Mire jó még middleware?
- i18n (nyelv választás URL / header alapján),
- A/B tesztelés,
- rate limiting,
- geolocation‑alapú redirect,
- egyszerű request logging.
Nem való:
- nehéz számításokra,
- klasszikus adatbázis műveletekre (Edge runtime korlátai),
- komplex business logikára.
Biztonsági megjegyzés (verziók)
2025 elején volt egy middleware‑hez kapcsolódó sérülékenység (CVE‑2025‑29927).