手机版

Laravel实现密码重置功能

时间:2021-09-01 来源:互联网 编辑:宝哥软件园 浏览:

简介

想快速实现这个功能?只需在新安装的Laravel应用程序下运行php artisan make:auth(如果您已经执行了此命令,则可以忽略它),然后在浏览器中访问http://your-app.dev/register或其他分配给该应用程序的URL。该命令将生成用户登录和注册所需的一切,包括密码重置!

大多数Web应用都为用户提供了重置密码的功能,Laravel也不例外。Laravel提供了一种发送密码重置链接和实现密码重置逻辑的便捷方法,不需要您在每个应用程序中重复实现。

注意:在使用Laravel提供的密码重置功能之前,用户模型必须使用照明\通知\通知特征。

数据库相关性

开始之前,请验证应用程序\用户模型是否实现了照明\合同\授权\ canresetpassword合同。当然,Laravel自己的App\User模型已经实现了这个接口,并且使用了light \ auth \ password \ canreset password特性来包含实现这个接口所需的方法。

生成重置令牌表迁移

接下来,必须创建用于存储密码重置令牌的表。Laravel自带了这个表的迁移,并将其存储在数据库/迁移目录中。因此,您所要做的就是运行迁移:

php artisan迁移

此表是密码重置:

选择途径

Laravel自带auth \遗忘passwordcontroller和Auth\ResetPasswordController(这两个控制器类将由php artisan make:auth命令自动生成),分别用于发送密码重置链接邮件和重置用户密码。make:auth命令自动生成了重置密码所需的路由:

php artisan make:auth

相应的路由在照明\路由\路由器的授权方法中定义:

视角

与路由一样,重置密码所需的视图文件也是由make:auth命令生成的。这些视图文件位于

在资源/视图/授权/密码目录下,您可以根据需要修改生成的文件。

重置密码

定义重置用户密码路由和视图后,您只需在浏览器中通过/password/reset访问此门户路由。框架自己的ForgotPasswordController已经包含了发送密码重置链接邮件的逻辑,而ResetPasswordController包含了重置用户密码的逻辑:

进入注册邮箱,点击发送密码重置链接,密码重置链接将被发送到邮箱:

当您打开邮箱时,您会收到这样一封密码重置电子邮件:

单击重置密码按钮进入重置密码页面:

填写并提交表单后,您可以重置密码。

密码重置后,用户将自动登录应用程序并被重定向到/home。您可以通过定义重置密码控制器的重定向到属性来自定义密码重置成功后的跳转链接:

受保护的$ redirectTo='/dashboard ';

注意:默认情况下,密码重置令牌在一小时内有效。您可以通过修改config/auth.php文件中的过期选项来更改有效时间。

定制

自定义身份验证保护

在配置文件auth.php中,可以配置多个“卫士”,实现基于多用户表的独立认证。您可以通过在内置的ResetPasswordController上重写保护方法来使用您选择的保护,该方法将返回一个保护实例:

使用照明\支持\正面\授权;受保护的函数guard(){ return auth :3360 guard(' guard-name ');}

自定义密码代理

在auth.php配置文件中,您可以配置多个密码来重置多个用户表的密码代理。同样,您可以通过重写ForgotPasswordController和ResetPasswordController中的代理方法来使用您选择的代理:

使用照明\支持\门面\密码;

/* * *获取密码重置期间使用的代理。* * @ return password broker * @ translator laravelacademy.org */protected function broker(){ return password 33603360 broker(' name ');}自定义密码重置消息

您可以轻松编辑向用户发送密码重置链接的通知类,以实现自定义密码重置电子邮件。要实现这个功能,需要在用户模型上重写sendPasswordResetNotification方法。在这种方法中,您可以使用任何您喜欢的通知类来发送通知。此方法接收的第一个参数是密码重置$token:

/* * *发送密码重置通知。* * @ param string $ token * @ return void */public function sendbasswordresetnotification($ token){ $ this-notify(new resetpasswordnotification($ token));}摘要

以上是边肖介绍的Laravel的密码重置功能。希望对大家有帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对我们网站的支持!

版权声明:Laravel实现密码重置功能是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。