忘记密码是应用中常见的场景之一,Laravel5也提供了对密码重置的支持,我们只需稍微做一下配置即可轻松实现重置密码。

1、实现思路

通过给用户注册邮箱发送包含特定令牌的重置密码链接,然后用户登录邮箱通过访问该重置密码链接实现密码的重置。

2、数据表&模型

实现CanResetPasswordContract契约并使用CanResetPasswordtrait的User模型(Laravel自带)

用于存放重置密码令牌的表password_resets(Laravel自带该表对应迁移文件,上一节中已一并创建)

3、创建路由

Laravel自带了用于密码重置的控制器Auth\PasswordController,和上一节提到的AuthController位于统一目录下。重置密码相关的业务逻辑都是通过该控制器中使用的ResetsPasswordstrait来实现的。下面我们在routes.php中为重置密码定义相关路由规则:

// 发送密码重置链接路由 Route::get('password/email', 'Auth\[email protected]');

Route::post('password/email', 'Auth\[email protected]'); // 密码重置路由 Route::get('password/reset/{token}', 'Auth\[email protected]');

Route::post('password/reset', 'Auth\[email protected]');

4、创建视图

定义好路由之后我们为get请求定义对应视图文件,首先创建发送密码重置链接路由对应视图resources/views/auth/password.blade.php:

{!! csrf_field() !!}

Email
发送密码重置链接     

然后创建重置密码路由对应视图resources/views/auth/reset.blade.php:

{!! csrf_field() !!}

Email:     
新密码:     
确认密码:     
重置密码     

此外我们还要创建一个额外视图——发送密码重置链接的邮件模板视图resources/views/emails/password.blade.php,用于为该邮件提供视图模板:

点击这里重置密码: {{ url('password/reset/'.$token) }}

如果该邮件模板视图文件路径位于其他地方,不要忘了配置config/auth.php中的password.email值与新路径对应。

5、发送邮件配置

接下来我们要做的是配置相关文件实现邮件发送功能为下一步测试做准备。

Laravel使用SwiftMailer库提供的邮件API实现邮件操作,详情可查看邮件文档,这里我们仅作简单配置实现邮件发送,邮件配置文件是config/mail.php:

'driver' => env('MAIL_DRIVER', 'smtp'),

'host' => env('MAIL_HOST', 'smtp.mailgun.org'),

'port' => env('MAIL_PORT', 587),

'from' => ['address' => null, 'name' => null],

'encryption' => env('MAIL_ENCRYPTION', 'tls'),

'username' => env('MAIL_USERNAME'),

'password' => env('MAIL_PASSWORD'),

'sendmail' => '/usr/sbin/sendmail -bs',

'pretend' => false,

];

可见大部分配置在.env文件中设置,这里我的.env文件配置如下:

MAIL_DRIVER=smtp MAIL_HOST=smtp.163.com MAIL_PORT=25 MAIL_USERNAME[email protected]163.com MAIL_PASSWORD=mypassword MAIL_ENCRYPTION=null

我使用的是163邮箱,其它邮箱参考对应邮箱相关设置项,并将自己的账户信息填写到MAIL_USERNAME和MAIL_PASSWORD。

此外我们还要配置mail.php中的from配置如下:

'from' => ['address' => '[email protected] ', 'name' => 'Laravel学院'],

这里只需要将address和.env文件中的MAIL_USERNAME值相匹配即可。至于name值就是邮箱中发件人名称,可自定义。

做好这一步配置后,接下来即可测试密码重置了。

6、重置密码

在浏览器中访问http://laravel.app:8000/password/email,页面显示如下:

Laravel 发送重置密码邮件

在Email输入框中填写你的注册邮箱,点击“发送密码重置链接”,然后去邮箱中查看收件箱,如果发送成功,可收到一封内容如下的密码重置邮件:

点击这里重置密码:

http://laravel.app:8000/password/reset/96c652e4885591c7ecfcb4f1ecc6f9b877ac1a2ab445e7fb45a89fdfc7283585

此时数据表password_resets中也新增了一条记录,用于保存重置链接令牌:

Laravel保存重置密码token

该令牌默认保存一个小时,要修有效期,可通过编辑config/auth.php中password.expire来实现。

我们将重置密码邮件中的链接拷贝出来粘贴到浏览器地址栏回车,页面显示内容如下:

Laravel重置密码页面

填写该表单后点击重置密码按钮即可完成密码重置。

密码重置成功后,默认跳转链接为/home,我们可以在PasswordController中通过设置$redirectTo/$redirectPath属性的值修改该跳转链接:

protected $redirectPath = '/profile';

这样重置成功后会跳转到http://laravel.app:8000/profile:

test登录成功!

同时password_resets中的对应记录也会被删除。

好了,下次登录就可以使用新密码进行登录认证了。

原文链接:http://www.phpxs.com/post/6520/

如有疑问请与原作者联系

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

php laravel 忘记密码,Laravel实现找回密码及密码重置,详细操作相关推荐

  1. centos系统中mysql密码_CentOS系统找回mysql登录密码

    在使用CentOS系统中,也许你会对很多的东西进行设置密码,来保护你的电脑的安全问题等,那么,如过一个不小心把密码忘记了,也许会给你的工作带来很多的不便.下面我们就来帮大家解决一个关于CentOS系统 ...

  2. MySQL数据库服务器密码不记得,找回数据库服务器密码

     mysql数据库密码不记得?以下是Windows操作系统的操作步骤: Cmd打开命令窗口 1. 关闭正在运行的MySQL服务-->net stop mysql 2. 进入mysql服务器的安装 ...

  3. php laravel 忘记密码,Laravel重置密码实例详解

    假如需要使用laravel搭建一个后台内容管理系统,但laravel默认的登陆注册不能满足目前的需求,重置密码的话因为是用在后台,并且不需要发送邮件进行重置,所以默认的重置密码肯定是不行的.跟随本文我 ...

  4. linuxroot密码正确无法登录_敦煌网忘记登录密码怎么办?敦煌网登录密码找回办法...

    1.如果您忘记了自己的密码,可以在登录敦煌网网站页面点击"忘记登录密码?",如下图所示: 2.正确输入您注册时的用户名及页面验证码,如下图所示 : 3.您可以选择"用手机 ...

  5. django重置密码发送html邮件,django 开发忘记密码通过邮箱找回功能示例

    一.流程分析: 1.点击忘记密码====>forget.html页面,输入邮箱和验证码,发送验证链接网址的邮件====>发送成功,跳到send_success.html提示 2.到邮箱里找 ...

  6. 手机卡服务器密码忘记了怎么修改密码,wifi密码忘记了怎么办找回密码 手机怎么修改自家wifi密码...

    家庭使用WiFi连网,基本上设置过一次后,下次会自动连接到手机上,时间久了之后我们可能自己也忘记密码是多少,如果使用WiFi感觉越来越卡,很可能是有人蹭网.那么,wifi密码忘记了怎么办找回密码,手机 ...

  7. 打开PPT的密码忘记了,如何找回?

    PPT文件设置了打开密码,在打开PPT文件之后就会有提示框,需要输入PPT密码才能够打开PPT文件,但是我们如果忘记了PPT密码的话,那就没办法打开PPT文件了. PPT文件如果设置了加密,一旦忘记密 ...

  8. iphone忘记访问控制密码之后如何找回

    转载: 忘记 iOS 的访问限制密码,如何找回或重设? 首先说结果:我的iPhone 5s(IOS 9.3.1未越狱)的『访问限制密码』已经成功破解,不需要恢复iPhone系统.不需要恢复备份.不需要 ...

  9. 忘了微信密码怎么办_微信密码忘记了怎么办 怎么找回密码【图文】

    随着互联网的不断发展,人们之间的联系更加便捷了,从聊天软件的更新换代就可以很好地看出来.微信大家都应该知道吧,这是腾讯旗下的一款聊天工具,当然了这是目前国内甚至是世界最火爆的聊天工具之一.现在不管是老 ...

  10. php忘记登陆密码,ZBlogPHP忘记登录密码后怎么办?使用官方密码找回工具

    不知道大家是否有忘记过登录密码,特别是我们站点有点多的时候有些站点就会很久都不登录一下,久而久之这个站点的管理员密码就忘记了.比如 ZBlogPHP 站点后台的登录密码忘记之后应该怎么办呢?不用慌,Z ...

最新文章

  1. vary渲染图没了_云渲染哪个好用?云渲染平台对比
  2. Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析
  3. linkedin爬虫_机器学习的学生和从业者的常见问题在LinkedIn上提问
  4. o2o家庭助手demo
  5. 【重难点】【RabbitMQ 01】消息队列的作用、主流的消息队列、RabbitMQ 基于什么传输消息、RabbitMQ 模型架构、死信队列和延迟队列
  6. python莫比乌斯内接矩形_莫比乌斯反演例题集 ^_^(示例代码)
  7. 用UITextView加载rtfd文件
  8. django1.2中将ManyToManyField呈现为checkbox
  9. 如何解决网站不安全信息?免费SSL证书
  10. 邮箱不能发送大附件,什么邮箱可以发送超大附件?
  11. pandas Create,Read,Write
  12. cout 声明与定义
  13. word文档中如何让正文分栏但是脚注不分栏
  14. css 设置 多行超出 显示为 省略号 ,可 多行超出 显示为 省略号
  15. python3中生成图片验证码和短信验证码的程序
  16. 最小二乘法直线拟合及其Matlab实现
  17. android 百度地图驾车导航,百度地图API详解之驾车导航
  18. css中“zoom:1”是什么意思
  19. Mask R-CNN 训练自己的数据集(balloon过程+报错解释)
  20. HTTP协议(深入http请求)

热门文章

  1. 数据库:MySQL 修改密码
  2. MicroC实现Expr部分和for循环,无续算版本Comp.fs展示
  3. c语言专业认知实践报告怎么写,C语言课程设计实习报告范本
  4. MySQL——建表建库基本命令
  5. 互联网寒冬下如何过冬?厚积薄发还是直接开摆?我选这个
  6. Python中文全攻略 中文乱码 输出中文乱码
  7. Hbuilderx uniapp本地打包android 项目
  8. centos7安装mysql失败
  9. 探索 OkHttp 原理
  10. BOM物料清单,金蝶KIS旗舰版专业版金蝶K3WISE生产管理软件ERP