Vous souhaitez implémenter cette fonctionnalité 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 autre attribué à l'application dans le URL du navigateur, cette commande générera tout le nécessaire pour la connexion et l'enregistrement de l'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.
Lié à la base de données
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 déjà être créée avec la migration de cette table, qui est stockée dans le répertoire base de données/migrations. Il ne vous reste donc plus qu'à lancer la migration :
php artisan migrate
Cette table est le password_resets :
Routes
Laravel est livré avec les contrôleurs AuthForgotPasswordController et AuthResetPasswordController (ces deux classes de contrôleurs seront automatiquement générées via la commande php artisan make:auth), qui sont utilisées respectivement pour envoyer des e-mails de lien de réinitialisation de mot de passe et réinitialiser les mots de passe des utilisateurs. 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
La route correspondante est définie dans la méthode auth d'IlluminateRoutingRouter :
Vue
Comme le routage, les fichiers de vue requis pour réinitialiser le mot de passe sont également générés via la commande make:auth. Ces fichiers de vue se trouvent dans
<.> Dans le répertoire resources/views/auth/passwords, vous pouvez modifier les fichiers générés selon vos besoins. Réinitialiser le mot de passeAprès avoir défini l'itinéraire et l'affichage de réinitialisation du mot de passe utilisateur, il vous suffit d'accéder à cet itinéraire d'entrée via /password/reset dans le navigateur. Le ForgotPasswordController fourni avec le framework contient déjà la logique d'envoi d'e-mails de lien de réinitialisation de mot de passe, et le ResetPasswordController contient la logique de réinitialisation des mots de passe des utilisateurs :Entrez l'e-mail d'inscription et cliquez sur Envoyer la réinitialisation du mot de passe Si vous définissez le lien, un lien de réinitialisation du mot de passe sera envoyé à l'adresse e-mail :
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éinitialisez 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 réussie du mot de passe en définissant l'attribut redirectTo de ResetPasswordController : protected $redirectTo = '/dashboard';Remarque : par défaut, la réinitialisation du mot de passe Le jeton est valable une heure. Vous pouvez modifier la durée de validité en modifiant l'option expire dans le fichier config/auth.php. PersonnaliséAuthentification personnalisée GardeDans le fichier de configuration auth.php, plusieurs « gardes » peuvent être configurés pour implémenter une authentification indépendante basée sur des tables multi-utilisateurs pour l'authentification. , vous pouvez utiliser la garde de votre choix en remplaçant la méthode guard sur le contrôleur ResetPasswordController intégré, qui renverra une instance de garde :
use Illuminate\Support\Facades\Auth; protected function guard() { return Auth::guard('guard-name'); }
utilisez IlluminateSupportFacadesPassword ;
E-mail de réinitialisation de mot de passe personnalisé/** * 获取密码重置期间所使用的broker. * * @return PasswordBroker * @translator laravelacademy.org */ protected function broker() { return Password::broker('name'); }
Vous pouvez facilement modifier la notification qui envoie le lien de réinitialisation de mot de passe à l'utilisateur. La classe implémente un e-mail de réinitialisation de mot de passe personnalisé pour implémenter cela. 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. Le premier paramètre reçu par cette méthode est la réinitialisation du mot de passe $token :
.
Recommandations associées :/** * 发送密码重置通知. * * @param string $token * @return void */ public function sendPasswordResetNotification($token) { $this->notify(new ResetPasswordNotification($token)); }
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!