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://iocaffcdn.phphub.org/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模板中区分登录与否。
  • 如何在登录页面加入图片验证码功能。
  • 如何选择数据库视图管理工具。
  • 如何让一个模型可以发送邮件通知。
  • 如何进行密码重置。
  • 如何解决修改密码成功无提示的问题。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

社区文档:

将托管在 packagist.org 和 github.com 的扩展包使用国内 CDN 加速
GitHub Laravel 扩展包 TOP 250
速查表方便快速查询框架功能,支持手机访问,支持中英文版本
Laravel 中文文档,由社区用户翻译和维护,将会保持一直更新
此文档的目的,就是为了提高技术团队的凝聚力、一致性和生产效率。
开发环境的部署,开发者工具的选择,适用于 Mac 和 Windows。
浓缩过后的精华
Laravel Nova 后台管理面板文档的中文翻译
Lumen 中文文档,由社区用户翻译和维护,将会保持一直更新
Laravel 下知名扩展包 Dingo API 的中文文档,Laravel API 开发必知必会