Cette fois, je vais vous apporter une explication détaillée des étapes pour mettre en œuvre la réinitialisation du mot de passe dans Laravel. Quelles sont les précautions pour mettre en œuvre la réinitialisation du mot de passe dans Laravel. Voici un cas pratique, jetons un coup d'œil.
Introduction
Vous souhaitez mettre en œuvre cette fonction rapidement ? Exécutez simplement php artisan make:auth
sous l'application Laravel nouvellement installée (si vous avez déjà exécuté cette commande, vous pouvez l'ignorer), puis visitez http://your-app.dev/register ou une autre URL attribuée à l'application dans le navigateur , cette commande générera tout le nécessaire pour l'enregistrement de la connexion utilisateur, y compris la réinitialisation du mot de passe !
La plupart des applications Web offrent la fonction de réinitialisation des mots de passe des utilisateurs, et Laravel ne fait pas exception. Laravel fournit des méthodes pratiques pour envoyer des liens de réinitialisation de mot de passe et implémenter une logique de réinitialisation de mot de passe sans que vous ayez à répéter l'implémentation vous-même dans chaque application.
Remarque : Avant d'utiliser la fonction de réinitialisation de mot de passe fournie par Laravel, le modèle User doit utiliser le trait IlluminateNotificationsNotifiable.
Base de données liée
Avant de commencer, vérifiez que le modèle AppUser implémente le contrat IlluminateContractsAuthCanResetPassword
. Bien entendu, le modèle AppUser de Laravel implémente déjà cette interface et utilise le trait IlluminateAuthPasswordsCanResetPassword pour inclure les méthodes nécessaires à l'implémentation de cette interface.
Générer la migration de la table des jetons de réinitialisation
Ensuite, la table utilisée pour stocker les jetons de réinitialisation de mot de passe doit être créée, Laravel est déjà livré avec cette table Les migrations sont stockées dans la base de données /répertoire migrations. Il ne vous reste donc plus qu'à lancer la migration :
php artisan migrate
La table est password_resets :
Route
Laravel est livré avec AuthForgotPasswordController
et AuthResetPasswordController
Controller (ces deux classes de contrôleurs seront transmises automatiquement via la commande php artisan make:auth généré), respectivement utilisé pour envoyer des e-mails de lien de réinitialisation de mot de passe et réinitialiser les fonctions de mot de passe utilisateur. Les routes nécessaires à la réinitialisation du mot de passe ont été automatiquement générées via la commande make:auth :
php artisan make:auth
correspondant à la définition de la route dans la méthode auth d'IlluminateRoutingRouter :
Vue
Comme le routage, le fichier de vue nécessaire à la réinitialisation du mot de passe est également transmis make:auth La commande est générée ensemble et ces fichiers de vue se trouvent à
<a href="//m.sbmmt.com/wiki/61.html" target="_blank ">resource<code><a href="//m.sbmmt.com/wiki/61.html" target="_blank">resource</a>s/views/auth/passwords
s/views/auth/passwords , vous pouvez modifier le fichier généré selon vos besoins.
Réinitialiser le mot de passe
Après avoir défini l'itinéraire et l'affichage de réinitialisation du mot de passe utilisateur, il vous suffit d'y accéder via /password/reset dans le navigateur Cette voie d'entrée. Le ForgotPasswordController
fourni avec le framework contient déjà la logique d'envoi d'un e-mail de lien de réinitialisation de mot de passe, et ResetPasswordController
contient la logique de réinitialisation du mot de passe de l'utilisateur :
Entrée l'e-mail d'inscription, cliquez sur Envoyer le lien de réinitialisation du mot de passe, et un lien de réinitialisation du mot de passe sera envoyé à l'adresse e-mail :
Lorsque vous ouvrez l'adresse e-mail, vous recevrez un mot de passe réinitialiser l'e-mail comme ceci :
Cliquez sur le bouton de réinitialisation du mot de passe pour accéder à la page de réinitialisation du mot de passe :
Vous pouvez réinitialiser votre mot de passe après avoir rempli le formulaire et l'avoir soumis.
Une fois le mot de passe réinitialisé, l'utilisateur se connectera automatiquement à l'application et sera redirigé vers /home. Vous pouvez personnaliser le lien de redirection après une réinitialisation de mot de passe réussie en définissant l'attribut redirectTo de ResetPasswordController :
protected $redirectTo = '/dashboard';
Remarque : Par défaut, le jeton de réinitialisation de mot de passe est valable une heure, vous peut changer la durée de validité en modifiant l'option expire dans le fichier config/auth.php.
Personnalisé
Garde d'authentification personnalisé
en Dans le fichier de configuration auth.php, vous pouvez configurer plusieurs "gardes" pour implémenter une authentification indépendante basée sur des tables multi-utilisateurs. Vous pouvez utiliser la vôtre en remplaçant la méthode de garde sur le contrôleur ResetPasswordController Selected. cette méthode renverra une instance de garde :
use Illuminate\Support\Facades\Auth; protected function guard() { return Auth::guard('guard-name'); }
Courtier de mot de passe personnalisé
dans le fichier de configuration auth.php , vous pouvez configurer plusieurs mots de passe à utiliser pour réinitialiser le courtier de mots de passe de plusieurs tables utilisateur. De même, vous pouvez utiliser le courtier de votre choix en remplaçant les méthodes du courtier dans les contrôleurs ForgotPasswordController et ResetPasswordController intégrés :
utilisez IlluminateSupportFacadesPassword;
/** * 获取密码重置期间所使用的broker. * * @return PasswordBroker * @translator laravelacademy.org */ protected function broker() { return Password::broker('name'); }
E-mail de réinitialisation de mot de passe personnalisé
Vous pouvez facilement modifier et envoyer un lien de réinitialisation de mot de passe. Implémentez un e-mail de réinitialisation de mot de passe personnalisé pour la classe de notification de l'utilisateur. Pour implémenter cette fonction, vous devez remplacer la méthode sendPasswordResetNotification
sur le modèle User. Dans cette méthode, vous pouvez utiliser n'importe quelle classe de notification que vous souhaitez envoyer des notifications. Cette méthode Le premier paramètre reçu est password reset $token :
/** * 发送密码重置通知. * * @param string $token * @return void */ public function sendPasswordResetNotification($token) { $this->notify(new ResetPasswordNotification($token)); }
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web PHP chinois !
Lecture recommandée :
Laravel utilise Redis pour partager les étapes de la session en détail
Explication détaillée de l'utilisation de php récursif cas de fonction
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!