Comment implémenter la fonction de réinitialisation du mot de passe Laravel

小云云
Libérer: 2023-03-20 11:50:01
original
1471 Les gens l'ont consulté

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 passe

Aprè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 :


Lorsque vous ouvrirez l'adresse e-mail, vous recevrez un e-mail de réinitialisation du mot de passe comme celui-ci :

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 Garde

Dans 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');
}
Copier après la connexion
Courtier de mot de passe personnalisé

Dans la 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 votre méthode de courtier en remplaçant les contrôleurs intégrés ForgotPasswordController et ResetPasswordController Selected :

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');
}
Copier après la connexion

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));
}
Copier après la connexion


Méthode de réinitialisation du mot de passe root MySQL oublié

Trois étapes pour réinitialiser le mot de passe root MySQL

Méthode de réinitialisation du mot de passe de l'utilisateur racine de la base de données MySQL oubliée_MySQL

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!