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.
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
Important
Ce que tu vas apprendre en détail
| Fonctionnalité | Contenu couvert dans le module |
|---|---|
| 🔐 Connexion & mot de passe | Formulaires React Router + validation serveur |
| 🧂 Hashage | Hachage sécurisé avec bcryptjs + comparaison |
| 🍪 Cookies | Création de session HTTP-only + redirection |
| 🛑 Protection des routes | Helpers requireUser() et getOptionalUser() |
| 🔁 Réinitialisation | Token sécurisé + expiration + formulaire + vérification |
| 📧 Envoi d’e-mails | Nodemailer + SMTP + template HTML |
| 🔍 Sécurité UX | Pas de fuites sur l’existence d’un compte (anti-enum) |
| 🌐 Redirection intelligente | Retour à la page demandée après login (redirectTo) |
| 🧪 Validation unifiée | Schéma Zod partagé entre client et serveur (avec Conform) |
⚙️ Variables .env | Validation 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/actiondans React Router 7
Tip
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 unique2+ Authentification complète avec cookies sécurisés3+ Connexion/déconnexion typée4+ Protection des pages privées5+ Réinitialisation de mot de passe via e-mail sécurisé6+ Infrastructure prête à être déployée