réinitialiser le mot de passe


{tip}
Vous voulez commencer rapidement ?

Exécutez simplement php artisan make:auth dans la nouvelle application Laravel, puis ouvrez http://your-app.test/register dans le navigateur ou donnez-le-vous L'application se voit attribuer une URL arbitraire. Cette commande se chargera de mettre en place tout le système d'authentification, y compris la réinitialisation du mot de passe !

  • La plupart des applications Web offrent aux utilisateurs la possibilité de réinitialiser leur mot de passe. Plutôt que de vous obliger à réimplémenter cette fonctionnalité dans chaque application, Laravel propose des moyens pratiques d'envoyer des rappels de mot de passe et d'effectuer des réinitialisations de mot de passe.
  • {note} Avant d'utiliser la fonction de réinitialisation de mot de passe de Laravel, votre modèle utilisateur doit utiliser le trait IlluminateNotificationsNotifiable.
  • Notes sur la base de données

    Tout d'abord, vérifiez que votre modèle AppUser implémente le contrat IlluminateContractsAuthCanResetPassword. Bien entendu, le modèle AppUser inclus dans le framework implémente déjà cette interface et utilise le trait IlluminateAuthPasswordsCanResetPassword pour inclure les méthodes requises pour l'implémenter. AppUser 模型是否实现了 IlluminateContractsAuthCanResetPassword 契约。当然,框架中包含的 AppUser 模型已经实现了该接口,并且使用了 IlluminateAuthPasswordsCanResetPassword trait t 来包含实现该接口所需的方法。

    生成重置令牌的表迁移

    接下来,必须创建一张数据表来存储密码重置令牌。该数据表的迁移已包含在 Laravel 应用的 database/migrations 目录中。 所以,你需要做的只是执行数据库迁移命令:

    php artisan migrate

    路由

    Laravel 已在 AuthForgotPasswordControllerAuthResetPasswordController 类中包含了发送密码重置链接电子邮件和重置用户密码的逻辑。所有执行密码重置所需的路由可以使用 Artisan 命令 make:auth 来生成:

    php artisan make:auth

    视图

    当执行 make:auth 命令时,Laravel 会生成重置密码所需的所有视图。 这些视图位于  resources/views/auth/passwords 目录中。你可以根据你应用的需要随意修改这些视图。

    重置密码后

    一旦你定义了重置用户密码的路由和视图,你可以在浏览器中访问 /password/reset 这个路由来重置密码。框架中的  ForgotPasswordController 已包含发送密码重置链接电子邮件的逻辑,同时 ResetPasswordController 包含了重置用户密码的逻辑。

    在重置密码后,用户将会自动登录并重定向到 /home。 你可以通过在 ResetPasswordController 中定义一个 redirectTo 属性来自定义密码重置后重定向的位置:

    protected $redirectTo = '/dashboard';

    {note} 默认情况下,密码重置令牌会在一小时后过期。你可以通过 config/auth.php 文件中的密码重置  expire 选项对此进行修改。

    自定义

    自定义身份验证看守器

    在你的 auth.php 配置文件中,你可以配置多个「看守器」,可以用来定义多个用户表的身份验证行为。你可以自定义框架中的 ResetPasswordController ,通过重写该控制器中的  guard

    Migration de table pour générer un jeton de réinitialisation

    Ensuite, une table de données doit être créée pour stocker le jeton de réinitialisation du mot de passe. Les migrations pour cette table de données sont incluses dans le répertoire database/migrations de l'application Laravel. Il vous suffit donc d'exécuter la commande de migration de base de données :
    use Illuminate\Support\Facades\Auth;protected function guard(){ 
       return Auth::guard('guard-name');
     }
    🎜🎜
    🎜🎜routing 🎜🎜 Laravel a inclus la logique d'envoi d'e-mails de lien de réinitialisation de mot de passe et de réinitialisation des mots de passe des utilisateurs dans les classes AuthForgotPasswordController et AuthResetPasswordController. Tous les itinéraires requis pour effectuer une réinitialisation de mot de passe peuvent être générés à l'aide de la commande Artisan make:auth : 🎜
    use Illuminate\Support\Facades\Password;
    /**
     * 获取在密码重置期间使用的代理。
     *
     * @return PasswordBroker
     */
     protected function broker(){  
       return Password::broker('name');
     }
    🎜🎜
    🎜🎜Vues🎜🎜Lors de l'exécution de la commande make:auth, Laravel générera toutes les vues nécessaires pour réinitialiser votre mot de passe. Ces vues se trouvent dans le répertoire resources/views/auth/passwords. Vous êtes libre de modifier ces vues en fonction des besoins de votre application. 🎜🎜🎜
    🎜🎜Après la réinitialisation du mot de passe 🎜🎜Une fois que vous avez défini la réinitialisation du mot de passe utilisateur, les itinéraires et vues, vous pouvez accéder à la route /password/reset dans le navigateur pour réinitialiser le mot de passe. Le ForgotPasswordController dans le framework contient déjà la logique pour envoyer l'e-mail du lien de réinitialisation du mot de passe, tandis que le ResetPasswordController contient la logique pour réinitialiser le mot de passe de l'utilisateur. 🎜🎜Après avoir réinitialisé le mot de passe, l'utilisateur se connectera automatiquement et sera redirigé vers /home. Vous pouvez personnaliser l'emplacement de redirection après une réinitialisation de mot de passe en définissant un attribut redirectTo dans ResetPasswordController : 🎜
    /**
     * 发送密码重置通知。
     *
     * @param  string  $token
     * @return void
     */
     public function sendPasswordResetNotification($token){ 
        $this->notify(new ResetPasswordNotification($token));
     }
    🎜{note} Par défaut, la réinitialisation du mot de passe Le jeton de configuration sera expirer après une heure. Vous pouvez modifier cela via l'option de réinitialisation du mot de passe expire dans le fichier config/auth.php. 🎜
    🎜🎜
    🎜🎜Personnalisation🎜
    🎜

    Observateur d'authentification personnalisé

    🎜Dans votre fichier de configuration auth.php, vous pouvez configurer plusieurs "observateurs", que vous pouvez utiliser pour définir le comportement d'authentification de plusieurs utilisateurs. tableaux. Vous pouvez personnaliser le ResetPasswordController dans le framework pour utiliser la garde de votre choix en remplaçant la méthode guard dans le contrôleur. Cette méthode devrait renvoyer une instance de garde : 🎜rrreee🎜🎜

    Proxy de mot de passe personnalisé

    Dans votre fichier de configuration auth.php, vous pouvez configurer plusieurs "proxys" de mot de passe qui peuvent être utilisés pour réinitialiser les mots de passe sur plusieurs tables utilisateur. Vous pouvez personnaliser ForgotPasswordController et ResetPasswordController dans le framework et utiliser le courtier de votre choix en remplaçant la méthode broker dans le contrôleur : auth.php 配置文件中,你可以配置多个密码「代理」,可以用来重置多个用户表上的密码。你可以自定义框架中的 ForgotPasswordControllerResetPasswordController , 通过重写控制器中的  broker 方法来使用你所选择的代理:

    rrreee

    自定义密码重置邮件

    你可以轻松地修改用于向用户发送密码重置链接的通知类。首先,重写  User 模型中的 sendPasswordResetNotification 方法。 在此方法中,你可以使用任何你所选择的通知类来发送通知。该方法接收的第一个参数是密码重置令牌  $token rrreee

    E-mail de réinitialisation de mot de passe personnaliséVous pouvez facilement modifier la classe de notification utilisée pour envoyer le lien de réinitialisation de mot de passe à l'utilisateur. Tout d’abord, remplacez la méthode sendPasswordResetNotification dans le modèle User. Dans cette méthode, vous pouvez utiliser n'importe quelle classe de notification de votre choix pour envoyer la notification. Le premier paramètre reçu par cette méthode est le jeton de réinitialisation du mot de passe $token :
    rrreee
    Cet article a été publié pour la première fois sur le site 🎜LearnKu.com🎜. 🎜🎜