API Token Authentication

Laravel 5.2 新增了不少的新特性,包括了內置多用戶認證表單數組輸入驗證隱式路由模型綁定中間件組的定義中間件 throttle 訪問頻率限制等主要功能。php

即將發佈的 Laravel 5.3 也新增了很多新的特性:全局輔助函數 cache() 查詢構造器 where / update 新增 JSON 屬性操做語法Blade 模板新增 $loop 變量更簡單的分頁實現圖片尺寸驗證規則等。Laravel 5.3 相對於 Laravel 5.2 變化有點大,簡化了 app 的目錄結構,並將路由分離出來。web

本文主要介紹一下 Laravel 5.2 下使用 API Token Authentication, Laravel 5.2 帶有了 TokenGuard 類。你可讓用戶的 api_token 追加到 API 請求的後面,並用 api_token 驗證請求,分爲 Laravel5.2Laravel5.2 版本。api

設置 api_token 字段並修改 User 模型

首先:

你要先給你的 users 表添加 api_token 的字段。數組

// Laravel5.2 和 Laravel5.3 同樣
$table->string('api_token', 60)->unique();

若是你的項目剛建立,將上述的字段添加到 users_table migrationapp

若是你的項目並非新建立的,那麼你能夠去添加一個 migrationusers 表添加 api_token 字段。dom

而後:

User 模型中的 $fillable$hidden 添加 api_token 字段ide

// Laravel5.2 和 Laravel5.3 同樣

project $fillable = ['name', 'email', 'password', 'api_token'];

project $hidden = ['password', 'remember_token', 'api_token'];

用戶建立時默認生成 api_token

因爲 Laravel5.2Laravel5.3 建立內置的用戶認證目錄結構不同,因此:
Laravel5.2:只需在 App\Http\Controllers\Auth\AuthController 中的 create 方法添加:
Laravel5.3:則在 App\Http\Controllers\Auth\RegisterController 中的 create 方法添加:函數

//將此代碼添加到建立用戶的數組中
'api_token' => str_random(60)

添加相對應的路由

咱們要確保咱們全部的 API 都經過使用 auth:api 中間件保護。oop

Laravel5.2code

//將此代碼放置到路由中。
Route::group([
    'prefix'     => 'api',
    'middleware' => ['api', 'auth:api']
], function () {
    //Write Routes
});

Laravel5.3:因爲 Laravel5.3 已將 api 的路由單獨分離出來,所以只需在 routes\api.php 中添加路由規則。路由組定義能夠到 app\Providers\RouteServiceProvider 中的 mapApiRoutes 方法查看。

經過在 auth 中間件後添加 :api ,告訴 Laravel 咱們想使用設置在 config/auth.php 下的 apiguard 和 默認爲 token

任何在 API 路由組的路由,全部的請求都須要驗證 api_token

獲取 User 記錄

// Laravel5.2 和 Laravel5.3 同樣
Auth::guard('api')->user();

這樣的寫法是爲了讓 Laravel 知道,咱們想調用的是 api guard,而不是調用默認的 web guard

本文參照API Token Authentication in Laravel 5.2
更多請關注PIGJIAN BLOG

相關文章
相關標籤/搜索