Next.js App Router : comment protéger des pages derrière une connexion ?
poze 3 months ago133 gadefr
J'ai /dashboard et /settings qui doivent être réservés aux utilisateurs connectés. Middleware, layout, ou vérification dans chaque page ?
Dyagnostik IA
Se IA ki fè l. Se pa yon repons — kominote a anba a konfime oswa korije l. Toujou verifye anvan ou fye l.
1 Repons
Fais-le en couches :
1. Middleware : redirection rapide vers /login s'il n'y a pas de cookie de session. C'est bien pour l'UX, mais ça ne suffit pas pour la sécurité : le middleware ne voit pas tout, et un bug de matcher peut laisser passer une route.
2. Dans le code serveur qui lit les données : c'est la vraie protection. Vérifie la session là où tu accèdes aux données (Server Component, Server Action, Route Handler) :
// app/dashboard/page.tsx
import { redirect } from 'next/navigation';
import { auth } from '@/lib/auth';
export default async function Dashboard() {
const session = await auth();
if (!session) redirect('/login');
return <DashboardView userId={session.user.id} />;
}
3. Ne compte pas uniquement sur un layout.tsx : les layouts ne se ré-exécutent pas à chaque navigation client, et ils ne protègent pas les Server Actions.
En pratique : une fonction requireUser() réutilisable, appelée partout où tu lis ou modifies des données.
Konekte pou di lòt moun si li te mache.
Sign in and verify your email to post an answer.