博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Laravel 5.1用户认证
阅读量:6243 次
发布时间:2019-06-22

本文共 2413 字,大约阅读时间需要 8 分钟。

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

1、实现思路

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

2、数据表&模型

  • 实现CanResetPasswordContract契约并使用CanResetPasswordtrait的User模型(Laravel自带)
  • 用于存放重置密码令牌的表password_resets(Laravel自带该表对应迁移文件,中已一并创建)

3、创建路由

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

// 发送密码重置链接路由Route::get('password/email', 'Auth\PasswordController@getEmail');Route::post('password/email', 'Auth\PasswordController@postEmail');// 密码重置路由Route::get('password/reset/{token}', 'Auth\PasswordController@getReset');Route::post('password/reset', 'Auth\PasswordController@postReset');复制代码

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使用库提供的邮件API实现邮件操作,详情可查看,这里我们仅作简单配置实现邮件发送,邮件配置文件是config/mail.php

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=smtpMAIL_HOST=smtp.163.comMAIL_PORT=25MAIL_USERNAME=yaojinbu@163.comMAIL_PASSWORD=mypasswordMAIL_ENCRYPTION=null复制代码

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

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

'from' => ['address' => 'yaojinbu@163.com ', 'name' => 'Laravel学院'],复制代码

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

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

转载于:https://juejin.im/post/5b04d6f051882567203469e1

你可能感兴趣的文章
小程序实现人脸识别功能
查看>>
Flora图像风格迁移App
查看>>
常用数组方法梳理
查看>>
JavaScript(4)之——前端模块化
查看>>
数字图像处理----图像旋转
查看>>
iOS 报错 Library not found lPods AFNetworking
查看>>
Spark性能优化:数据本地化优化
查看>>
Java中几个常用类介绍
查看>>
程序员为什么要高薪?看完让你勇于为自己开价
查看>>
(八)spring cloud微服务分布式云架构- Spring Cloud 组件和概念介绍
查看>>
由 Tagged Pointer 联想到的一个问题
查看>>
Python代理IP爬虫的简单使用
查看>>
KVO探索
查看>>
前端错误与捕获
查看>>
玩一玩颜值测试
查看>>
动画和flex布局
查看>>
CSS布局
查看>>
第一篇:SpringBoot 2 x 构建工程
查看>>
你不了解的vue中的v-on事件绑定
查看>>
CAShaperLayer&UIBezierPath系列(二)
查看>>