Laravel 5.2 新特性系列 -- 多使用者認證功能實現詳解

來源:互聯網
上載者:User
Laravel 5.2新增多使用者認證支援,即同時允許不同資料表使用者(如前台使用者、後台使用者)登入認證。下面我們就來簡單介紹多使用者登入及註冊功能實現。

1、產生認證腳手架

首先我們使用Laravel 5.2提供的認證腳手架完成初始化工作:

php artisan make:auth

該Artisan命令會產生使用者認證所需的路由、視圖以及HomeController:

去查看路由檔案routes.php,會發現該檔案已經被更新:

Route::group(['middleware' => 'web'], function () {    Route::auth();    Route::get('/home', 'HomeController@index');});

其中 Route::auth() 定義了註冊登入路由, /home 為認證通過後跳轉路由。

2、實現前台使用者登入

接下來我們先實現前台使用者登入,也就是Laravel內建的User使用者登入。通過上面的腳手架,我們已經產生了認證所需的所有代碼,剩下要做的就是使用遷移命令建立使用者認證相關表:

php artisan migrate

該命令執行後產生 users 表和 password_resets 表,分別為使用者主表和密碼重設表。

然後我們就可以在瀏覽器中輸入 http://laravel.app/register 來註冊新使用者:

我們建立一個使用者名稱為 test 的使用者,註冊成功後,進入 http://laravel.app/home ,會發現已經登入:

3、編輯認證設定檔

要實現多使用者認證,首先要配置認證設定檔 auth.php ,這裡我們實現的功能是前後台使用者登入,所以對應配置如下:

 [        'guard' => 'web',        'passwords' => 'users',    ],    'guards' => [        'web' => [            'driver' => 'session',            'provider' => 'users',        ],        'admin' => [            'driver' => 'session',            'provider' => 'admins',        ],        'api' => [            'driver' => 'token',            'provider' => 'users',        ],    ],    'providers' => [        'users' => [            'driver' => 'eloquent',            'model' => App\User::class,        ],        'admins' => [            'driver' => 'eloquent',            'model' => App\Admin::class,        ],    ],    'passwords' => [        'users' => [            'provider' => 'users',            'email' => 'auth.emails.password',            'table' => 'password_resets',           'expire' => 60,        ],    ],];

認證是由 guard 和 provider 兩部分構成的(參考使用者認證文檔),所以我們在這兩個配置項中分別新增了 admin 和 admins 選項。

4、建立後台使用者模型

接下來我們來實現後台使用者登入,首先使用如下Artisan命令產生後台使用者模型:

php artisan make:model Admin --migration

帶上 --migration 選項會產生對應使用者表 admins ,我們定義該資料表欄位和 users 一樣:

Schema::create('admins', function (Blueprint $table) {    $table->increments('id');    $table->string('name');    $table->string('email')->unique();    $table->string('password', 60);    $table->rememberToken();    $table->timestamps();});

然後通過運行遷移命令產生該表:

php artisan migrate

然後更新 Admin 模型類如下:

    

5、定義後台使用者認證路由及控制器

接下來我們來定義後台使用者認證路由,修改 routes.php 代碼如下:

Route::group(['middleware' => ['web']], function () {    Route::auth();    Route::get('home', 'HomeController@index');    Route::get('admin/login', 'Admin\AuthController@getLogin');    Route::post('admin/login', 'Admin\AuthController@postLogin');    Route::get('admin/register', 'Admin\AuthController@getRegister');    Route::post('admin/register', 'Admin\AuthController@postRegister');    Route::get('admin', 'AdminController@index');});

然後使用Artisan命令建立對應控制器:

php artisan make:controller Admin/AuthControllerphp artisan make:controller AdminController

編輯 Admin/AuthController.php 代碼如下:

middleware('guest:admin', ['except' => 'logout']);    }    protected function validator(array $data)    {        return Validator::make($data, [            'name' => 'required|max:255',            'email' => 'required|email|max:255|unique:admins',            'password' => 'required|confirmed|min:6',        ]);    }    protected function create(array $data)    {        return Admin::create([            'name' => $data['name'],            'email' => $data['email'],            'password' => bcrypt($data['password']),        ]);    }}

編輯 AdminController.php 代碼如下:

middleware('auth:admin');    }    public function index()    {        $admin = Auth::guard('admin')->user();        return $admin->name;    }}

6、視圖檔案建立及修改

最後我們要建立後台使用者認證對應視圖檔案,這裡我們簡單拷貝前台使用者視圖模板並稍作修改即可:

cp -r resources/views/auth resources/views/admin

修改 resources/views/admin 目錄下登入及註冊表單提交地址:

/login -> /admin/login/register -> /admin/register

7、實現後台使用者認證

在瀏覽器中訪問 http://laravel.app/admin/register ,同樣顯示註冊頁面:

註冊一個使用者名稱為 admin 的使用者,註冊成功後,頁面跳轉到 http://laravel.app/admin ,說明認證成功。

好了,至此我們已經完成前後台使用者同時登入認證功能。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.