用户收到重置密码的邮件,点击了里面的链接,会打开一个重置密码的表单,下面,我们就去创建这个表单。
这个视图文件应该在 password 目录里面,叫做 reset.blade.php ...
新建文件.. 命名为 reset.blade.php ... 让它使用一个布局 ... 再定义一个 content 区域 ..
再去设计这个重置密码的表单 ... 先开启这个表单 ... Form .. open .... 结束这个表单,使用 Form ... close .. 表单里面应该有四个元素 ... 一个隐藏的 input 元素,它的值应该是从用户点击在邮件里面的链接上面获取到的,也就是重置密码用的那个 token ... 在提交这个表单的时候,Laravel 要用它跟数据库里面的 token 值进行比较 ...
创建一个隐藏的表单元素,用的是 Form 类的 hidden 方法 .. 这个元素的名字是 token .. 它的值,是从控制器的 getReset 方法里面传递过来的 ... 叫做 $token
{{ Form::hidden('token', $token)}}
再去添加一个邮件字段 ...
{{ Form::email('email', '', array('class' => 'form-control', 'placeholder' => 'Email')) }}
然后是一个密码字段 ... 可以让用户输入新的密码 ...
{{ Form::password('password', array('class' => 'form-control', 'placeholder' => '新密码'))}}
再添加一个密码确认的字段 ...
{{ Form::password('password_confirmation', array('class' => 'form-control', 'placeholder' => '密码确认'))}}
最后是一个提交按钮 ...
{{ Form::submit('确认', array('class' => 'btn btn-lg btn-primary btn-block')) }}
演示
下面,我们去演示一下 ... 在邮件里,找到 Laravel 给我发过来的重置密码用的链接 ... 复制一下 ... 回到浏览器 ... 粘贴过来 ... 请求这个地址 ... 会用 RemindersController 里面的 getReset 方法去处理 ... 它会先验证链接上的 token ... 如果没有问题,就会打开 password/reset 这个地址 ...
输入我的邮箱地址 ... 再输入新的密码 ... 再确认一下 ... 点击确认的话 ...
这个表单会用 post 方法去请求这个 password/reset ... RemindersController 里面的 postReset 会接收到这个请求 ... 没有问题话,把把新的密码保存到数据库里面 ... 同时也会把在 password_reminders 表里面的请求记录删除掉 ..
我们可以到数据库里看一下 ...
在 password_reminders 这个表里,会有一些要求重设密码的记录 ... 在浏览器里点击重设密码的链接以后,会对应这个表里面的 token 字段的值 ... 如果与这里的某条记录匹配 ... 就会打开重设密码的页面 ...
再回到浏览器 ... 点击 确认 ... 这样会按照我们在这里输入的密码,重新设置用户的密码...
再回到数据库 ... 你会看到,这里少了一条记录 ...
现在,我就可以使用新的密码登录了 ...