JWT(JSON Web Token)Authentication

使用套件

套件名稱:tymondesigns/jwt-auth

套件版本:0.5.*

安裝

使用 composer 安裝套件

composer.json 加入 ""tymon/jwt-auth": "0.5.*" 並執行 composer update 安裝套件

/*composer.json*/
"require": {
  "tymon/jwt-auth": "0.5.*"
}
$ composer update

設定套件

開啟config/app.php檔案,並將系列套件資訊加入 providersaliases

'providers' => [
    Tymon\JWTAuth\Providers\JWTAuthServiceProvider::class,
],
'aliases'=>[
    'JWTAuth' => Tymon\JWTAuth\Facades\JWTAuth::class,
    'JWTFactory' => Tymon\JWTAuth\Facades\JWTFactory::class,
]

產生套件設定

執行 php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider" 複製套件的 config/jwt.php 設定檔到你應用程式的設定檔目錄

$ php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"

產生 JWT Secret Key

每個應用應該有屬於自己的 JWT Secret Key 用於加密並驗證你的資料

$ php artisan jwt:generate

產生的 JWT Secret Key 會設定在 config/jwt.php 中的 secret

// config/jwt.php
[
    'secret' => env('JWT_SECRET', 'your_personal_jwt_secret_key')
]

設定檔說明

參數名稱 說明 資料類型 預設值
secret 密鑰 String
ttl JWT token 有效時間(單位:分鐘) Integer 60
refresh_ttl token 允許重新更新時間(單位:分鐘) Integer 20160(2 週)
algo 加密演算法 String HS256
user 使用者模型類別位置 String App\User
identifier 使用者資料主鍵欄位 String id
required_claims 必須包含在 token payload 的資料,若驗證時無這些資料則會拋出 TokenInvalidException 例外 Array [‘iss’, ‘iat’, ‘exp’, ‘nbf’, ‘sub’, ‘jti’]
blacklist_enabled 開啟黑名單清單 Boolean true
providers.user 找尋使用者類別物件 String Tymon\JWTAuth\Providers\ User\EloquentUserAdapter
providers.jwt 用於加解密 JWT Token 的類別物件 String Tymon\JWTAuth\Providers\ JWT\NamshiAdapter
providers.auth 取得受驗證使用者的類別物件 Closure Function Tymon\JWTAuth\Providers\ Auth\IlluminateAuthAdapter
providers.storage 儲存黑名單 token 的快取物件,token 將會儲存到它過期為止 Closure Function Tymon\JWTAuth\Providers\ Storage\IlluminateCacheAdapter

JWT Claims

Registered Claims

參數名稱 說明
iss 發行 JWT token 的人
sub 主題 JWT token
iat 發行 JWT token 的時間,可以判斷這個 token 產生出來多久了
exp 有效期限,一定要大於現在時間
nbf 生效時間,在這個時間以前,無法處理此 JWT token
jti JWT 唯一識別值,防止 JWT 被重複使用

Public Claims

我們公開放到 JWT token 的資訊

參考資料

KeJyun 最新新書推薦
- Laravel 5 for beginner 新手道場:優雅運用框架快速開發 PHP 網站
- Laravel框架开发详解:从零基础到运用框架快速开发PHP网站

Laravel 是 PHP 的框架(Framework),提供了很多開發網站或 API 所需的工具及環境,經過簡單的設定就可以完成資料的處理及顯示,使開發者可以很優雅且快速的開發出各個不同的產品。本書適合有 PHP 基礎的人,但不知道要怎麼選擇框架,或者不用框架的人也能夠明白它的好處。

雖然 WordPress 也能夠架站,但如果有客製化需求,要開發各式各樣的網站,或提供 App 使用的 API,如此一來你只能選擇用框架,而 Laravel 是目前最受歡迎的。

本書將解說為什麼要使用框架,以及理解框架的優缺點後,要怎麼選擇框架,並用框架快速建構一個網站。除非必要,否則書中會避免專業技術用語,盡量使用最生活化易懂的例子及語氣,讓大家更容易進入 Laravel 的世界。

Laravel 5 for beginner 新手道場:優雅運用框架快速開發 PHP 網站

購書連結

Laravel框架开发详解:从零基础到运用框架快速开发PHP网站

購書連結

comments powered by Disqus