JWT全稱是 JSON Web Token 的縮寫,是一個非常輕巧的規范,這個規范允許我們使用 JWT 在用戶和服務器之間傳遞安全可靠的信息。
第一步安裝:
/* jwt-auth 是 Laravel 和 lumen 的 JWT 組件,首先來安裝一下,Laravel 5.5 的適配版本為 1.0.0-rc.2 */ composer require tymon/jwt-auth:1.0.0-rc.2
第二步配置:
1、安裝完成后,我們需要設置一下 JWT 的 secret,這個 secret 很重要,用於最后的簽名,更換這個 secret 會導致之前生成的所有 token 無效。
php artisan jwt:secret
2、修改 config/auth.php,將 api guard 的 driver 改為 jwt

4、在config/api.php添加內容
'auth' => [
'jwt' => Dingo\Api\Auth\Provider\JWT::class
]
第三步:測試
user模型需要繼承 Tymon\JWTAuth\Contracts\JWTSubject 接口,並實現接口的兩個方法 getJWTIdentifier () 和 getJWTCustomClaims ()。
<?php
namespace App\Models;
use Tymon\JWTAuth\Contracts\JWTSubject;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Auth;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable implements JWTSubject
.
.
.
// Rest omitted for brevity
public function getJWTIdentifier()
{
return $this->getKey();
}
public function getJWTCustomClaims()
{
return [];
}
}
使用 php artisan tinker 測試生成token:
1、$user=\App\User::first()
2、\Auth::guard('api')->fromUser($user)->setTTL(60*24*365)
可以通過 setTTL(60*24*365) 設置為有效期一年,單位為一分鍾,默認有效期為60分鍾。

postman測試:
編輯:routes/api.php (需要先安裝dingo\api,見上篇)
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', [
'namespace' => 'App\Http\Controllers\Api'
], function($api) {
$api->group(['middleware'=>'api.auth'],function ($api)
{
$api->get('user',function()
{
/*驗證token成功獲取用戶信息*/
echo Auth::guard('api')->user();
});
});
});

