Skip to main content

Introduction

La réinitialisation du mot de passe est un flux d’authentification indispensable. Les kits de démarrage la construisent automatiquement, mais pour un projet API uniquement ou une UI personnalisée, il faut l’implémenter manuellement. Quand implémenter manuellement :
  • Backend d’API seulement (frontend SPA ou application mobile)
  • Construction d’une UI d’authentification sans kit de démarrage
  • Personnalisation complète des e-mails et de l’URL de réinitialisation
Si vous avez créé votre projet avec un kit de démarrage (laravel new), la réinitialisation du mot de passe est déjà en place. Cette page explique l’implémentation sans kit.
Vue d’ensemble du flux :

Configuration

La configuration se fait dans config/auth.php sous la clé passwords.
  • driver — mode de stockage (database ou cache)
  • expire — durée de validité du token en minutes (60 par défaut)
  • throttle — délai (secondes) avant qu’un nouveau lien puisse être demandé

Drivers

Driver database

Driver par défaut. Il stocke les tokens dans la table password_reset_tokens. Cette table fait partie de la migration par défaut (0001_01_01_000000_create_users_table.php).

Driver cache

Option nouvelle disponible depuis Laravel 11. Elle ne nécessite pas de table dédiée, ce qui simplifie la configuration.
Le driver cache stocke les tokens dans le cache. Aucune migration de table n’est requise. Comme la clé de cache est l’e-mail de l’utilisateur, veillez à ne pas réutiliser cette clé ailleurs dans l’application.
Spécifier un store dédié évite que php artisan cache:clear n’efface les données de reset. La valeur doit correspondre à un store défini dans config/cache.php.

Préparation du modèle

Deux traits sont nécessaires sur App\Models\User.
  • Notifiable — nécessaire pour envoyer des notifications par e-mail
  • CanResetPassword — fournit les méthodes de génération et de vérification des tokens
Le modèle User par défaut inclut déjà ces traits. Aucune action supplémentaire n’est requise sur une installation neuve.

Implémentation du routage

Quatre routes sont nécessaires.

1. Formulaire de demande de lien

Formulaire pour saisir l’e-mail.
Vue Blade correspondante :

2. Traitement de l’envoi du lien

Reçoit le formulaire et envoie l’e-mail via Password::sendResetLink().
Password::sendResetLink() retourne une constante de statut.

3. Formulaire de réinitialisation

Affiche le formulaire pour saisir un nouveau mot de passe lorsque l’utilisateur clique sur le lien.
Vue correspondante :

4. Traitement de la réinitialisation

Reçoit le formulaire et met à jour le mot de passe via Password::reset().
Constantes de statut de Password::reset() :

Durée de validité du token

L’option expire de config/auth.php définit la durée en minutes (60 par défaut).
Avec le driver database, les tokens expirés restent en base. Purgez-les régulièrement :
Automatisez via le scheduler.

Personnalisation

Utiliser une notification personnalisée

Redéfinissez sendPasswordResetNotification sur le modèle User pour personnaliser l’e-mail.

Personnaliser l’URL du lien

Dans boot de AppServiceProvider, utilisez ResetPassword::createUrlUsing() pour changer l’URL. Utile pour rediriger vers une SPA hébergée sur une autre origine.

Configuration des Trusted Hosts

Le lien de réinitialisation est généré à partir de l’en-tête Host de la requête HTTP. Pour éviter les requêtes provenant d’hôtes malveillants, configurez les Trusted Hosts dans bootstrap/app.php.
Vérifiez toujours la configuration Trusted Hosts en implémentant la réinitialisation, sous peine d’être exposé aux attaques par injection d’en-tête Host.

Récapitulatif

Prochaines étapes

Introduction à l'authentification

Vue d’ensemble du système d’authentification Laravel.

Notifications

Approfondissez la personnalisation des notifications par e-mail.
Dernière modification le 13 juillet 2026