0

0

laravel怎么实现重置密码功能

PHPz

PHPz

发布时间:2023-04-21 10:05:49

|

1452人浏览过

|

来源于php中文网

原创

在现代的 web 应用中,用户密码的重置是一个必不可少的功能。一个经过良好设计的密码重置过程不仅能够保证用户的账号安全,还能提高用户的使用体验。laravel 是一个流行的 php web 开发框架,其中也集成了一个方便的密码重置系统。本文将介绍如何使用 laravel 实现密码重置功能。

环境准备

在开始之前,确保您已经完成了以下安装:

  • PHP 7.2 及以上版本
  • Composer 2 及以上版本
  • Laravel 5.5 及以上版本

如果您还未安装 Laravel,可以通过以下命令在终端中安装:

composer create-project --prefer-dist laravel/laravel project-name

重置密码流程

Laravel 的密码重置流程基于邮件通知,步骤如下:

  1. 用户提交邮箱以及需要重置密码的链接到应用程序;
  2. 应用程序发送带有重置链接的邮件到用户的邮箱;
  3. 用户访问邮件链接;
  4. 应用程序判断链接是否过期、合法;
  5. 如果链接合法,页面出现输入密码的表单;
  6. 用户填写新密码;
  7. 用户提交表单;
  8. 应用程序重置用户密码。

因此,我们需要实现这个流程的每个步骤。

邮件配置

首先,我们需要在 Laravel 中配置邮件。打开 .env 文件,在其中添加如下配置:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mxhichina.com
MAIL_PORT=25
MAIL_USERNAME=youremail@example.com
MAIL_PASSWORD=yourpassword
MAIL_FROM_ADDRESS=youremail@example.com
MAIL_ENCRYPTION=

这里的配置需要根据您的实际情况进行修改,MAIL_DRIVER 指定了使用的邮件服务提供商,例如 smtpmailgunsendmail 等,这里我们使用了阿里云邮件服务提供商 smtp.mxhichina.com,并且需要填写您的邮箱用户名和密码。MAIL_FROM_ADDRESS 用于指定发送邮件的发送地址。

接下来,我们需要在 config/mail.php 文件中配置邮件发送选项,例如设置发件人名称和地址:

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'youremail@example.com'),
    'name' => env('MAIL_FROM_NAME', 'Your Name'),
],

路由配置

现在,我们需要配置路由来处理密码重置操作。在 Laravel 中,我们可以使用自带的 Password 控制器来处理重置密码的逻辑。打开 routes/web.php 文件,添加以下路由:

// Password Reset Routes
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset');

这里我们在 Auth 中使用了两个控制器,分别是 ForgotPasswordControllerResetPasswordController,分别处理重置密码邮件发送和密码重置操作。

视图配置

51shop 网上商城系统
51shop 网上商城系统

51shop 由 PHP 语言开发, 使用快速的 MySQL 数据库保存数据 ,为中小型网站实现网上电子商务提供一个完美的解决方案.一、用户模块1. 用户注册:用户信息包括:用户ID、用户名、用户密码、性别、邮箱、省份、城市、 联系电话等信息,用户注册后不能立即使用,需由管理员激活账号,才可使用(此功能管理员可设置)2. 登录功能3. 资料修改:用户可修改除账号以后的所有资料4. 忘记密码:要求用

下载

接下来,我们需要添加视图来展示用户填写邮箱和密码的表单。我们可以使用类似以下代码片段的 Blade 模板代码实现:

@csrf

在这个页面中,我们使用了一个表单来接受用户填写的邮箱地址,并且添加了一个发送按钮,点击这个按钮将会向该邮箱发送密码重置链接。

我们还需要添加另一个视图来允许用户输入新密码。类似以下代码片段可以用于实现一个这样的表单:

@csrf

这个表单需要用户填写新密码和确认密码,并且需要通过 $token$email 参数来验证重置链接是否合法。这些参数可以在 ResetPasswordController@showResetForm 中获取。

控制器逻辑

我们在路由中使用了两个控制器来处理密码重置操作,分别是 ForgotPasswordControllerResetPasswordController

ForgotPasswordController 提供了一个 showLinkRequestForm() 方法,用于展示用户填写邮箱地址的表单。另外一个方法 sendResetLinkEmail() 将会向用户提供的邮箱地址发送含有密码重置链接的邮件,其中使用了 Password::sendResetLink() 方法来处理重置链接的生成和发送。

ResetPasswordController 中的 showResetForm() 方法将会展示用户输入新密码的表单,如果重置链接不合法则会返回到邮件链接过期的提示页面。reset() 方法则处理了用户填写重置密码表单并提交的逻辑,其中使用了 Password::reset() 方法来将用户的密码更新到数据库中。

use Illuminate\Support\Facades\Password;

class ForgotPasswordController extends Controller
{
    use SendsPasswordResetEmails;
}

class ResetPasswordController extends Controller
{
    use ResetsPasswords;

    protected $redirectTo = '/home';

    public function showResetForm(Request $request, $token = null)
    {
        return view('auth.passwords.reset')->with(
            ['token' => $token, 'email' => $request->email]
        );
    }
}

使用密码重置功能

现在,我们已经完成了 Laravel 中的密码重置功能的实现,我们来试着使用实现的功能进行密码重置:

  1. 打开应用程序的登录页面,点击忘记密码;
  2. 输入您的注册的邮箱,并点击发送重置密码链接按钮;
  3. 打开您的邮箱,查找并点击密码重置链接;
  4. 输入您的新密码,并确认新密码;
  5. 点击提交按钮。

如果一切顺利,您的密码已重置成功!

总结

在本文中,我们介绍了如何使用 Laravel 实现一个基本的密码重置功能。在现代的 Web 应用中,密码重置是一项必备功能,只有经过良好设计和实现的密码重置过程才能够保障用户账号的安全与用户的使用体验。相信在您学习本文所述的技术,实现完整的密码重置功能后,用户的密码安全和使用体验会有所提高。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

22

2026.01.23

c++空格相关教程合集
c++空格相关教程合集

本专题整合了c++空格相关教程,阅读专题下面的文章了解更多详细内容。

24

2026.01.23

yy漫画官方登录入口地址合集
yy漫画官方登录入口地址合集

本专题整合了yy漫画入口相关合集,阅读专题下面的文章了解更多详细内容。

99

2026.01.23

漫蛙最新入口地址汇总2026
漫蛙最新入口地址汇总2026

本专题整合了漫蛙最新入口地址大全,阅读专题下面的文章了解更多详细内容。

132

2026.01.23

C++ 高级模板编程与元编程
C++ 高级模板编程与元编程

本专题深入讲解 C++ 中的高级模板编程与元编程技术,涵盖模板特化、SFINAE、模板递归、类型萃取、编译时常量与计算、C++17 的折叠表达式与变长模板参数等。通过多个实际示例,帮助开发者掌握 如何利用 C++ 模板机制编写高效、可扩展的通用代码,并提升代码的灵活性与性能。

15

2026.01.23

php远程文件教程合集
php远程文件教程合集

本专题整合了php远程文件相关教程,阅读专题下面的文章了解更多详细内容。

65

2026.01.22

PHP后端开发相关内容汇总
PHP后端开发相关内容汇总

本专题整合了PHP后端开发相关内容,阅读专题下面的文章了解更多详细内容。

61

2026.01.22

php会话教程合集
php会话教程合集

本专题整合了php会话教程相关合集,阅读专题下面的文章了解更多详细内容。

63

2026.01.22

宝塔PHP8.4相关教程汇总
宝塔PHP8.4相关教程汇总

本专题整合了宝塔PHP8.4相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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