1.3 KiB
1.3 KiB
| title | status | audience | language | last_updated | when_to_read | ||
|---|---|---|---|---|---|---|---|
| Proxy (route protection) | active |
|
nl | 2026-05-03 | When adding or modifying route-level access control in proxy.ts. |
Patroon: Proxy (route protection)
In Next.js 16 hernoemd van middleware.ts naar proxy.ts, functienaam van middleware naar proxy.
// proxy.ts
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'
import { sessionOptions } from '@/lib/session'
const protectedRoutes = ['/dashboard', '/products', '/todos', '/settings']
const authRoutes = ['/login', '/register']
export function proxy(request: NextRequest) {
const path = request.nextUrl.pathname
const isProtected = protectedRoutes.some(r => path.startsWith(r))
const isAuthRoute = authRoutes.some(r => path.startsWith(r))
// Cookie-aanwezigheid controleren — volledige sessievalidatie in layout.tsx
const hasSession = !!request.cookies.get(sessionOptions.cookieName)?.value
if (isProtected && !hasSession) {
return NextResponse.redirect(new URL('/login', request.url))
}
if (isAuthRoute && hasSession) {
return NextResponse.redirect(new URL('/dashboard', request.url))
}
return NextResponse.next()
}
export const config = {
matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)'],
}