JWT(JSON Web Token)Authentication
使用套件
套件版本: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
檔案,並將系列套件資訊加入 providers
與 aliases
'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 的資訊
參考資料
- tymondesigns/jwt-auth - Installation
- tymondesigns/jwt-auth - Configuration
- Node 實作 jwt 驗證 API | DEVLOG of andyyou
- Json Web Tokens: Introduction
- Where to Store Your JWTs - Cookies vs HTML5 Web Storage
- UniSharp/laravel-jwt: Auth guard and middleware for jwt refesh in a concurrency use case, e.g. single page web applications.
KeJyun 最新新書推薦
|
|
---|---|
Laravel 是 PHP 的框架(Framework),提供了很多開發網站或 API 所需的工具及環境,經過簡單的設定就可以完成資料的處理及顯示,使開發者可以很優雅且快速的開發出各個不同的產品。本書適合有 PHP 基礎的人,但不知道要怎麼選擇框架,或者不用框架的人也能夠明白它的好處。 雖然 WordPress 也能夠架站,但如果有客製化需求,要開發各式各樣的網站,或提供 App 使用的 API,如此一來你只能選擇用框架,而 Laravel 是目前最受歡迎的。 本書將解說為什麼要使用框架,以及理解框架的優缺點後,要怎麼選擇框架,並用框架快速建構一個網站。除非必要,否則書中會避免專業技術用語,盡量使用最生活化易懂的例子及語氣,讓大家更容易進入 Laravel 的世界。 |
|
購書連結 |
|
購書連結 |