Maison  >  Article  >  développement back-end  >  Implémentation de la réinitialisation du mot de passe Laravel en PHP

Implémentation de la réinitialisation du mot de passe Laravel en PHP

php中世界最好的语言
php中世界最好的语言original
2018-03-24 15:40:261630parcourir

Cette fois, je vais vous présenter l'implémentation de la réinitialisation du mot de passe Laravel en PHP. Quelles sont les précautions pour la réinitialisation du mot de passe Laravel en PHP 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="http://www.php.cn/wiki/61.html" target="_blank ">resource<code><a href="http://www.php.cn/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 la 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. Veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Tableau de fonctions de tri de tableau bidimensionnel personnalisé php

Explication détaillée de l'API côté serveur PHP et du développement de l'interface

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!

Déclaration:
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