Laravel 5.2
新增了很多的新特性,包括了內建多使用者認證、表單陣列輸入驗證、隱式路由模型繫結、中介軟體組的定義、中介軟體 throttle
訪問頻率限制等主要功能。
即將釋出的 Laravel 5.3
也新增了不少新的特性:全域性輔助函式 cache()
、查詢構造器 where / update
新增 JSON
屬性操作語法、Blade
模板新增 $loop
變數、更簡單的分頁實現、圖片尺寸驗證規則等。Laravel 5.3
相對於 Laravel 5.2
變化有點大,簡化了 app
的目錄結構,並將路由分離出來。
本文主要介紹一下 Laravel 5.2
下使用 API Token Authentication
, Laravel 5.2
帶有了 TokenGuard
類。你可以讓使用者的 api_token
追加到 API
請求的後面,並用 api_token
驗證請求,分為 Laravel5.2
和 Laravel5.2
版本。
設定 api_token
欄位並修改 User
模型
首先:
你要先給你的 users
表新增 api_token
的欄位。
// Laravel5.2 和 Laravel5.3 一樣
$table->string('api_token', 60)->unique();
如果你的專案剛建立,將上述的欄位新增到 users_table migration
。
如果你的專案並不是新建立的,那麼你可以去新增一個 migration
為 users
表新增 api_token
欄位。
然後:
在 User
模型中的 $fillable
、$hidden
新增 api_token
欄位
// Laravel5.2 和 Laravel5.3 一樣
project $fillable = ['name', 'email', 'password', 'api_token'];
project $hidden = ['password', 'remember_token', 'api_token'];
使用者建立時預設生成 api_token
由於 Laravel5.2
和 Laravel5.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
中介軟體保護。
Laravel5.2
:
//將此程式碼放置到路由中。
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
下的 api
的 guard
和 預設為 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
本作品採用《CC 協議》,轉載必須註明作者和本文連結