重设密码
由 学军 于 3 年前创建,最后更新于 1 年前 版本 #28577
简介 想要快速实现此功能?只需在新安装的应用程序下运行 php make:auth 即可(如果你已经执行过该命令,可以忽略),然后在浏览器或分配给应用程序的其他 URL 中访问,该命令会生成所需的用户登录和注册一切,包括密码重置!
大多数 Web 应用程序都提供了为用户重置密码的能力,也不例外,它们提供了方便的方法来发送密码重置链接和实现密码重置逻辑,而无需您在每个应用程序中重复它。
注意:在使用提供的密码重置功能之前,用户模型必须使用 \\ 特征。数据库相关
在开始之前,请验证 App\User 模型是否实现了 \\Auth\ 合约。当然,包含的 App\User 模型已经实现了这个接口,并使用 \Auth\\ trait 来包含实现接口所需的方法。
生成重置令牌表迁移
接下来,必须创建存储密码重置令牌的表,并且该表的迁移已经附带,并且存储在 / 目录中。因此,您所要做的就是运行迁移:
php artisan migrate
这张表是:
路由
它带有 Auth\ller 和 Auth\ler 控制器(这两个控制器类将由 php make:auth 命令自动生成),分别用于发送密码重置链接电子邮件和重置用户密码。重置密码所需的路由已由 make:auth 命令自动生成:
php artisan make:auth
对应的路由在\\的auth方法中定义:
看法
与路由一样,重置密码所需的视图文件也是由 make:auth 命令生成的。这些视图文件位于 /views/auth/ 目录中。您可以相应地修改生成的文件。
重设密码
定义好重置用户密码路由和视图后,只需要在浏览器中通过 //reset 访问该入口路由即可。框架自带的ller已经包含了发送密码重置链接邮件的逻辑,ler包含了重置用户密码的逻辑:
输入注册的邮箱地址,点击发送密码重置链接,密码重置链接将发送至此邮箱:
打开邮箱,你会收到一封这样的重置密码邮件:
点击重置密码按钮,进入重置密码页面:
填写表格并提交后,您可以重设密码。
重置密码后,用户将自动登录到应用程序并重定向到 /home。可以通过定义ler的属性来自定义密码重置成功后的跳转链接:
protected $redirectTo = '/dashboard';
注意:默认情况下,密码重置令牌的有效期为一小时,您可以通过修改 /auth.php 文件中的选项来更改有效时间。定制
自定义身份验证保护
在配置文件auth.php中,可以配置多个“”,实现基于多个用户表的独立认证。您可以通过覆盖内置 ler 控制器上的保护方法来使用您选择的保护。该方法将返回一个保护实例:
use Illuminate\Support\Facades\Auth;
protected function guard()
{
return Auth::guard('guard-name');
}
自定义密码
在配置文件 auth.php 中,可以配置多个密码用于重置多个用户表的密码。同样,您可以通过覆盖包含的 ller 和 ler 控制器中的方法来使用您的选择:
use Illuminate\Support\Facades\Password;
/**
* 获取密码重置期间所使用的broker.
*
* @return PasswordBroker
* @translator laravelacademy.org
*/
protected function broker()
{
return Password::broker('name');
}
自定义密码重置电子邮件
您可以轻松编辑将密码重置链接发送给用户的通知类1password 重置密码1password 重置密码,以实现自定义密码重置电子邮件。要实现此功能,您需要覆盖 User 模型上的方法。在这个方法中,你可以使用任何你喜欢的通知类发送一个通知,这个方法接收到的第一个参数是密码重置$token:
/**
* 发送密码重置通知.
*
* @param string $token
* @return void
*/
public function sendPasswordResetNotification($token)
{
$this->notify(new ResetPasswordNotification($token));
}
推荐内容
了解更多