LC02 第 3 遍学习小结 -- 操作记录 2
由于LC02教程和实际需要开发的项目之间存在差异,所以第3遍学习只关注自己实际项目必须会用到的技能点。
第三章. 注册登录
3.1 用户认证脚手架
本节非常重要,完成了LC01的70%的工作。
1) 执行认证脚手架命令
$ php artisan make:auth
提示是否覆盖都选择no
修改web.php
pass
2) 移除无用页面
pass
3) 顶部导航
修改resources/views/layouts/_header.blade.php
<li class="nav-item"><a class="nav-link" href="{{ route('login') }}">登录</a></li>
<li class="nav-item"><a class="nav-link" href="{{ route('register') }}">注册</a></li>
4) 本地化
$ composer require "overtrue/laravel-lang:~3.0"
如果你想修改扩展包提供的语言文件,可以使用以下命令发布语言文件到项目里:
$ php artisan lang:publish zh-CN
发布后的语言文件存放于 resources/lang/zh-CN
文件夹。
5) 版本控制
$ git add -A
$ git commit -m "生成用户认证代码"
3.2 用户注册
注册功能本身估计不会用,但是注册状态的写法值得参考
1) 测试注册功能
如上所述,pass
2) 登录状态
resources/views/layouts/_header.blade.php
<!-- Right Side Of Navbar -->
<ul class="navbar-nav navbar-right">
<!-- Authentication Links -->
@guest
<li class="nav-item"><a class="nav-link" href="{{ route('login') }}">登录</a></li>
<li class="nav-item"><a class="nav-link" href="{{ route('register') }}">注册</a></li>
@else
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<img src="https://cdn.learnku.com/uploads/images/201709/20/1/PtDKbASVcz.png?imageView2/1/w/60/h/60" class="img-responsive img-circle" width="30px" height="30px">
{{ Auth::user()->name }}
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a class="dropdown-item" href="">个人中心</a>
<a class="dropdown-item" href="">编辑资料</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" id="logout" href="#">
<form action="{{ route('logout') }}" method="POST">
{{ csrf_field() }}
<button class="btn btn-block btn-danger" type="submit" name="button">退出</button>
</form>
</a>
</div>
</li>
@endguest
</ul>
3) 登录注册用户
pass
4) 版本控制
$ git add -A
$ git commit -m "登录状态"
3.3 注册验证码
本节引入了图片验证码,开发初期不用加上。
1) 安装扩展包
$ composer require "mews/captcha:~2.0"
2) 运行以下命令生成配置文件 config/captcha.php:
$ php artisan vendor:publish --provider='Mews\Captcha\CaptchaServiceProvider'
3) 页面嵌入
教程是在注册页面,我后期准备加在登录页面。参考
4) 后端验证
教程是在
RegisterController
中,我后期准备加在LoginController
中。
5) 版本控制
$ git add -A
$ git commit -m "登录验证码"
3.4 数据库视图管理工具
Macos下直接选择 SequelPro
或者 MySQLWorkbench
3.5 邮箱认证
1) 修改模型存放位置
$ mkdir app/Models
$ mv app/User.php app/Models/User.php
编辑器全局搜索 App\User 替换为 App\Models\User
2) 修改 User 模型
这里引入了Trait的使用
class User extends Authenticatable implements MustVerifyEmailContract
{
use Notifiable, MustVerifyEmailTrait;
3) 发送认证邮件
这个是开发用户注册成功后,发送认证邮件的功能。由于我不需要注册,直接pass
4) 开始测试
修改.env
MAIL_DRIVER=smtp
.
.
.
5) 强制用户认证
pass
6) 版本控制
$ git add -A
$ git commit -m "邮箱通知的准备工作"
3.6 认证后的提示
不需要注册,自然也不需要注册后的认证,pass
3.7 密码重置
本节非常重要和实用。
1) 找回密码
原理是在控制器 ResetPasswordController 里使用 ResetsPasswords Trait 来集成框架功能。
2) 开始测试
由于前面没有强制认证,那么可以直接点击「忘记密码?」链接进入重试密码页面,写入邮箱并提交。
提交后进入邮箱查看,点击收到的重设密码链接。进入重设密码的表单页面,输入邮箱和新密码提交既可以修改密码。
3) 解决修改密码成功无提示的问题
编辑app/Http/Controllers/Auth/ResetPasswordController.php
protected function sendResetResponse(Request $request, $response)
{
session()->flash('success', '密码更新成功,您已成功登录!');
return redirect($this->redirectPath());
}
4) 版本控制
$ git add -A
$ git commit -m "找回密码成功消息提示"
3.8 小结
- 如何使用一句代码快速搭建登录注册界面及功能。
- 如何使用route函数生成链接。
- 如何本地化。
- 如何在blade模板中区分登录与否。
- 如何在登录页面加入图片验证码功能。
- 如何选择数据库视图管理工具。
- 如何让一个模型可以发送邮件通知。
- 如何进行密码重置。
- 如何解决修改密码成功无提示的问题。