重置密码

收藏611

阅读118021

更新时间2022-04-15

前言:

重置密码

重置密码

简介

{tip} 想要快速上手? 只需要在新建的 Laravel 应用中运行 php artisan make:auth ,然后在浏览器中打开  http://your-app.test/register 或者给你的应用分配任意一个 URL。 这个命令将会负责搭建起整个身份验证系统,包括重置密码!

大多数 web 应用都为用户提供了重置密码的功能。相较于强迫你在每个应用中都要重新实现一遍此功能,Laravel 提供了便捷的方法来发送密码提醒以及执行密码重置。

{note} 在使用 Laravel 的密码重置功能之前,你的用户模型必须使用 Illuminate\Notifications\Notifiable trait。

数据库注意事项

首先,验证你的 App\User 模型是否实现了 Illuminate\Contracts\Auth\CanResetPassword 契约。当然,框架中包含的 App\User 模型已经实现了该接口,并且使用了 Illuminate\Auth\Passwords\CanResetPassword trait t 来包含实现该接口所需的方法。

生成重置令牌的表迁移

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

php artisan migrate

路由

Laravel 已在 Auth\ForgotPasswordControllerAuth\ResetPasswordController 类中包含了发送密码重置链接电子邮件和重置用户密码的逻辑。所有执行密码重置所需的路由可以使用 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  方法来使用你所选择的看守器。这个方法应当返回一个看守器实例:

use Illuminate\Support\Facades\Auth;protected function guard(){ 
   return Auth::guard('guard-name');
 }

自定义密码代理

在你的 auth.php 配置文件中,你可以配置多个密码「代理」,可以用来重置多个用户表上的密码。你可以自定义框架中的 ForgotPasswordControllerResetPasswordController , 通过重写控制器中的  broker 方法来使用你所选择的代理:

use Illuminate\Support\Facades\Password;
/**
 * 获取在密码重置期间使用的代理。
 *
 * @return PasswordBroker
 */
 protected function broker(){  
   return Password::broker('name');
 }

自定义密码重置邮件

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

/**
 * 发送密码重置通知。
 *
 * @param  string  $token
 * @return void
 */
 public function sendPasswordResetNotification($token){ 
    $this->notify(new ResetPasswordNotification($token));
 }
本文章首发在 LearnKu.com 网站上。

科技资讯

更多

精选课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时

61.7万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时

39.3万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时

70.9万人学习

独孤九贱(1)_HTML5视频教程
独孤九贱(1)_HTML5视频教程

共25课时

61.6万人学习

独孤九贱(2)_CSS视频教程
独孤九贱(2)_CSS视频教程

共22课时

23万人学习

独孤九贱(3)_JavaScript视频教程
独孤九贱(3)_JavaScript视频教程

共28课时

33.9万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时

125万人学习

关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号