【PHP】Laravel开发——7、注册与登陆

用户认证脚手架

Laravel 自带用户认证功能,咱们可用此功能快速构建用户中心。
首先执行认证脚手架命令,生成代码:php

$ php artisan make:auth

命令 make:auth 会询问咱们是否要覆盖 app.blade.php ,由于咱们再已经自定义了「主要布局文件」—— app.blade.php ,因此此处输入 nocss

使用 git status 能够看到 routes/web.php 被修改,咱们查看该文件修改了哪些内容:
routes/web.phphtml

<?php  
  
Route::get('/','PagesController@root')->name('root');  
Auth::routes();  
  
Route::get('/home', 'HomeController@index')->name('home');

Auth::routes(); 是 Laravel 的用户认证路由,这里不须要去修改。git

再看下一行web

Route::get('/home', 'HomeController@index')->name('home');

咱们已经有本身的主页,不须要再次设置主页,直接删除。
同时删除 app/Http/Controllers/HomeController.phpresources/views/home.blade.php 两个文件:数据库

$ rm -f app/Http/Controllers/HomeController.php resources/views/home.blade.php

因为咱们删除了 /home 这个路由,所以须要把引用了这个路由的地方都修改掉:浏览器

修改 app/Http/Controllers/Auth/LoginController.phpapp/Http/Controllers/Auth/RegisterController.phpapp/Http/Controllers/Auth/ResetPasswordController.php,将 $redirectTo 的值从 /home 改为 /bash

修改 app/Http/Middleware/RedirectIfAuthenticated.php,将 redirect('/home') 修改成 redirect('/')app

手动在浏览器导航栏里输入 http://shop.test/login ,访问登陆页面,便可查看效果。svg

顶部导航

接下来咱们把顶部导航的登陆、注册按钮指向真实的地址。
_resources/views/layouts/header.blade.php

<nav class="navbar navbar-default navbar-static-top">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#app-navbar-collapse">
                <span class="sr-only">Toggle Navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="{{ url('/') }}">
                Laravel Shop
            </a>
        </div>
        <div class="collapse navbar-collapse" id="app-navbar-collapse">
            <ul class="nav navbar-nav">
            </ul>
            <ul class="nav navbar-nav navbar-right">
                <!-- 登陆注册连接开始 -->
                @guest
                    <li><a href="{{ route('login') }}">登陆</a></li>
                    <li><a href="{{ route('register') }}">注册</a></li>
                @else
                    <li class="dropdown">
                        <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
                            <span class="user-avatar pull-left" style="margin-right:8px; margin-top:-5px;">
                                <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">
                            </span>
                            {{ Auth::user()->name }} <span class="caret"></span>
                        </a>
                        <ul class="dropdown-menu" role="menu">
                            <li>
                                <a href="{{ route('logout') }}" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
                                    退出登陆
                                </a>
                                <form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
                                    {{ csrf_field() }}
                                </form>
                            </li>
                        </ul>
                    </li>
            @endguest
            <!-- 登陆注册连接结束 -->
            </ul>
        </div>
    </div>
</nav>

刷新浏览器,将鼠标移到右上角的登陆和注册连接,可看到已经指向了对应的地址。

测试注册

先执行数据库迁移建立对应的数据库表结构:

$ php artisan migrate

而后经过顶部的注册连接访问注册页面,填入对应信息以后点击 Register 按钮,注册帐号

测试登陆

点击右上角的下拉菜单中的『退出登陆』按钮,再填入上一步注册时使用的邮箱和密码,点击 Login 登陆,就能够看到登陆成功。

Git 代码版本控制

$ git add -A
$ git commit -m "注册与登陆"