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.Configuration
La configuration se fait dansconfig/auth.php sous la clé passwords.
driver— mode de stockage (databaseoucache)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
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.
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 surApp\Models\User.
Notifiable— nécessaire pour envoyer des notifications par e-mailCanResetPassword— 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.2. Traitement de l’envoi du lien
Reçoit le formulaire et envoie l’e-mail viaPassword::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.4. Traitement de la réinitialisation
Reçoit le formulaire et met à jour le mot de passe viaPassword::reset().
Password::reset() :
Durée de validité du token
L’optionexpire de config/auth.php définit la durée en minutes (60 par défaut).
database, les tokens expirés restent en base. Purgez-les régulièrement :
Personnalisation
Utiliser une notification personnalisée
RedéfinissezsendPasswordResetNotification sur le modèle User pour personnaliser l’e-mail.
Personnaliser l’URL du lien
Dansboot 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êteHost de la requête HTTP. Pour éviter les requêtes provenant d’hôtes malveillants, configurez les Trusted Hosts dans bootstrap/app.php.
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.