L'authentification dans React Router 7

dans ce module complet, tu apprendras à gérer l’inscription, la connexion, la déconnexion et la réinitialisation de mot de passe de manière sécurisée. Tu découvriras comment intégrer Prisma, bcrypt, les cookies de session signés, Conform, Zod et les emails transactionnels avec Nodemailer. Crée une expérience fluide et protégée pour tes utilisateurs, avec un typage strict et une UX irréprochable.

3 min read

Pourquoi un module dédié à l’authentification ?

Jusqu’ici tu as appris à créer des formulaires performants avec React Router 7, à manipuler les données côté serveur et à conteneuriser ton application.

Mais une application moderne n’est jamais complète sans une authentification sécurisée.

Ce module t’apprend à mettre en place toute la logique d’authentification complète et professionnelle :

  • ✅ Connexion & déconnexion sécurisée
  • ✅ Inscription avec email + mot de passe
  • ✅ Hachage avec bcryptjs et vérification serveur
  • ✅ Cookies de session HTTP-only
  • ✅ Routes protégées avec redirection automatique
  • ✅ Réinitialisation de mot de passe avec token temporaire
  • ✅ Envoi d’e-mails avec Nodemailer
  • ✅ Validation complète avec Zod + Conform
  • ✅ Variables d’environnement typées avec Zod

Ce que tu vas apprendre en détail

FonctionnalitéContenu couvert dans le module
🔐 Connexion & mot de passeFormulaires React Router + validation serveur
🧂 HashageHachage sécurisé avec bcryptjs + comparaison
🍪 CookiesCréation de session HTTP-only + redirection
🛑 Protection des routesHelpers requireUser() et getOptionalUser()
🔁 RéinitialisationToken sécurisé + expiration + formulaire + vérification
📧 Envoi d’e-mailsNodemailer + SMTP + template HTML
🔍 Sécurité UXPas de fuites sur l’existence d’un compte (anti-enum)
🌐 Redirection intelligenteRetour à la page demandée après login (redirectTo)
🧪 Validation unifiéeSchéma Zod partagé entre client et serveur (avec Conform)
⚙️ Variables .envValidation typée au boot avec Zod (serverEnv)

Pourquoi ce module est important

L’authentification est la porte d’entrée de ton application.

Une mauvaise implémentation met en péril toute la sécurité de ta base de données. Une UX mal conçue pousse les utilisateurs à abandonner. Un oubli de redirection casse la navigation.

Ce module va plus loin que le simple formulaire de login : il t’enseigne des patterns réutilisables, des bonnes pratiques de production et une stack prête à être déployée.


Prérequis

Ce module suppose que tu as suivi au moins les bases de la formation :

  • Modules Formulaires et Routing
  • Avoir configuré Prisma avec PostgreSQL
  • Avoir utilisé les loader / action dans React Router 7

Stack utilisée

  • Prisma pour la base de données PostgreSQL
  • bcryptjs pour le hachage sécurisé
  • Conform pour la gestion avancée des formulaires
  • Zod pour la validation et le typage des données
  • React Router 7 (anciennement Remix) pour le routing et le cycle loader/action
  • Nodemailer pour l’envoi des e-mails
  • Docker (en module suivant) pour le déploiement

Objectif final

À la fin du module, tu auras mis en place :

1
+ Création de compte avec email unique
2
+ Authentification complète avec cookies sécurisés
3
+ Connexion/déconnexion typée
4
+ Protection des pages privées
5
+ Réinitialisation de mot de passe via e-mail sécurisé
6
+ Infrastructure prête à être déployée