NextAuth est un excellent outil quand vous avez besoin de fournisseurs OAuth ou d'un store de sessions en base de données. Mais pour une auth simple admin-only ou des projets où vous contrôlez toutes les credentials, une solution JWT personnalisée est significativement plus simple et plus facile à appréhender.
Les pièces essentielles
Vous avez besoin de quatre choses : une route de login qui vérifie les credentials et pose un cookie httpOnly, un utilitaire JWT qui signe et vérifie les tokens, un middleware qui protège les routes admin en lisant le cookie, et une route de logout qui efface le cookie. C'est tout.
Cookies httpOnly vs localStorage
Ne stockez jamais les JWT dans localStorage. Une faille XSS n'importe où dans votre application donne à un attaquant un accès complet à toute valeur dans localStorage. Les cookies httpOnly ne sont pas accessibles à JavaScript — ils sont uniquement envoyés automatiquement lors des requêtes HTTP, rendant l'exfiltration par XSS impossible.
Protection des routes par middleware
Le middleware Next.js s'exécute sur l'Edge avant que la page ne se rende, ce qui en fait l'endroit idéal pour vérifier le cookie de session. Redirigez vers /auth/login si aucun token valide n'est présent. Cela centralise la protection et la rend impossible à oublier sur des pages individuelles.