laravel 5.5 api接口開發:JWT安裝+實現API token 認證

JWT全稱是 JSON Web Token 的縮寫,是一個很是輕巧的規範,這個規範容許咱們使用 JWT 在用戶和服務器之間傳遞安全可靠的信息。php

第一步安裝:api

/* jwt-auth 是 Laravel 和 lumen 的 JWT 組件,首先來安裝一下,Laravel 5.5 的適配版本爲 1.0.0-rc.2 */

composer require tymon/jwt-auth:1.0.0-rc.2

 

第二步配置:安全

 

一、安裝完成後,咱們須要設置一下 JWT 的 secret,這個 secret 很重要,用於最後的簽名,更換這個 secret 會致使以前生成的全部 token 無效。服務器

php artisan jwt:secret

二、修改 config/auth.php,將 api guard 的 driver 改成 jwtapp

四、在config/api.php添加內容composer

'auth' => [
    'jwt' => Dingo\Api\Auth\Provider\JWT::class
]

 

第三步:測試ide

 

user模型須要繼承 Tymon\JWTAuth\Contracts\JWTSubject 接口,並實現接口的兩個方法 getJWTIdentifier () 和 getJWTCustomClaims ()。post

<?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:測試

 

一、$user=\App\User::first()


二、\Auth::guard('api')->fromUser($user)->setTTL(60*24*365) 

能夠經過 setTTL(60*24*365) 設置爲有效期一年,單位爲一分鐘,默認有效期爲60分鐘。

  

  

 postman測試:ui

 

 編輯: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();
        });
    });
});

  

 

相關文章
相關標籤/搜索