「 原創 」Laravel 5.8 API 開發實戰(二)

「 原創 」Laravel 5.8 API 開發實戰(二)

安裝依賴

終端運行 composer require tymon/jwt-auth:dev-develop --prefer-source 安裝依賴(注:如果運行 composer require tymon/jwt-auth,會出現版本兼容問題,出現 handle 方法找不到的問題,所以此處我們安裝最新的 dev 版本)。

「 原創 」Laravel 5.8 API 開發實戰(二)

配置依賴

將 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 配置文件。

「 原創 」Laravel 5.8 API 開發實戰(二)

運行 php artisan jwt:secret,生成加密密鑰。

「 原創 」Laravel 5.8 API 開發實戰(二)

更新 app/User.php,新增接口實現。

<code>

/<code>

修改 config/auth.php 的 guards 配置,將授權看守器(Guards)的 api 驅動改為 jwt。

「 原創 」Laravel 5.8 API 開發實戰(二)

註冊 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'

=>

'[email protected]'

,

'password'

=> bcrypt(

'123456'

)]); 生成

1

條測試數據/<code>
「 原創 」Laravel 5.8 API 開發實戰(二)

測試接口

http://localhost:8000/api/v1/auth/login

「 原創 」Laravel 5.8 API 開發實戰(二)

錯誤的賬號密碼


「 原創 」Laravel 5.8 API 開發實戰(二)

正確的賬號密碼,200 正常返回 access_token


「 原創 」Laravel 5.8 API 開發實戰(二)

正常登出(再次運行將報錯,需要重新運行 login 進行登錄後再次退出)


「 原創 」Laravel 5.8 API 開發實戰(二)

刷新 token 測試

至此,API 接口完成了 JWT 的認證。

要是 token 過期了呢?又該如何實現 token 的無感刷新?


分享到:


相關文章: