安裝依賴
終端運行 composer require tymon/jwt-auth:dev-develop --prefer-source 安裝依賴(注:如果運行 composer require tymon/jwt-auth,會出現版本兼容問題,出現 handle 方法找不到的問題,所以此處我們安裝最新的 dev 版本)。
配置依賴
將 Tymon \ JWTAuth \ Providers \ LaravelServiceProvider::class 添加至 config / app.php 的 providers 下,註冊服務提供者。
<code>'providers'
=> [ Tymon\JWTAuth\Providers\LaravelServiceProvider::class
,// ...
]/<code>
運行 php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider" 發佈配置文件。該命令會在 config 目錄下生成 jwt.php 配置文件。
運行 php artisan jwt:secret,生成加密密鑰。
更新 app/User.php,新增接口實現。
<code>/<code>
修改 config/auth.php 的 guards 配置,將授權看守器(Guards)的 api 驅動改為 jwt。
註冊 Facade(雖然 Facade 並不是必須,但是配置後能為編碼帶來不少便利)修改 config/app.php 的 aliases 配置字段,如下所示(如果不配置如下這兩個 Facade,可以使用輔助函數 auth()):
<code>'aliases'
=> [//
...'JWTAuth'
=> Tymon\JWTAuth\Facades\JWTAuth::class
,'JWTFactory'
=> Tymon\JWTAuth\Facades\JWTFactory::class
]/<code>
接下來,創建控制器
<code>php
artisan
make
:controller
Api
\v1
\AuthController
/<code>
修改剛創建的控制,新增 login,logout,refresh 等方法,具體代碼如下所示:
<code>/<code>
當然,控制器有了,要訪問,還要註冊下路由
<code>use
App
\Http
\Controllers
\Api
\v1
as
Api
;use
Illuminate
\Support
\Facades
\Route
;use
Illuminate
\Contracts
\Routing
\Registrar
; Route::prefix('v1'
)->group(function
(Registrar $api)
{ $api->get('/user'
, Api\UserController::class.'@index'
)); Route::group(['prefix'
=>'auth'
],function
(Registrar $api)
{ $api->post('login'
, Api\AuthController::class.'@login'
); $api->post('logout'
, Api\AuthController::class.'@logout'
); $api->post('refresh'
, Api\AuthController::class.'@refresh'
); }); });/<code>
一切準備的都差不多了,還差點數據,我們生成點測試數據
<code>運行:php artisan tinker 運行:App\User::create(['name'
=>'makeit'
,'email'
=> ,'password'
=> bcrypt('123456'
)]); 生成1
條測試數據/<code>
測試接口
http://localhost:8000/api/v1/auth/login
至此,API 接口完成了 JWT 的認證。
要是 token 過期了呢?又該如何實現 token 的無感刷新?