1. 程式人生 > >laravel5.7 安裝和部署dingo+passport

laravel5.7 安裝和部署dingo+passport

(1)passport

安裝

在開始之前, 請通過 Composer 包管理器安裝 Passport:

composer require laravel/passport

Passport 服務提供器使用框架註冊自己的資料庫遷移目錄,因此在註冊提供器後,就應該執行 Passport 的遷移命令來自動建立儲存客戶端和令牌的資料表:

php artisan migrate

{note} 如果你不打算使用 Passport 的預設遷移,你應該在 AppServiceProviderregister 方法中呼叫 Passport::ignoreMigrations 方法。 你可以用這個命令 php artisan vendor:publish --tag=passport-migrations

匯出預設遷移。

接下來,執行 passport:install 命令來建立生成安全訪問令牌時所需的加密金鑰,同時,這條命令也會建立用於生成訪問令牌的「個人訪問」客戶端和「密碼授權」客戶端:

php artisan passport:install

上面命令執行後,請將 Laravel\Passport\HasApiTokens Trait 新增到 App\User 模型中,這個 Trait 會給你的模型提供一些輔助函式,用於檢查已認證使用者的令牌和使用範圍:

<?php

namespace App;

use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;
}

接下來,在 AuthServiceProviderboot 方法中呼叫 Passport::routes 函式。這個函式會註冊發出訪問令牌並撤銷訪問令牌、客戶端和個人訪問令牌所必需的路由:

<?php

namespace App\Providers;

use Laravel\Passport\Passport;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    /**
     * 應用程式的策略對映。
     *
     * @var array
     */
    protected $policies = [
        'App\Model' => 'App\Policies\ModelPolicy',
    ];

    /**
     * 註冊任何認證/授權服務。
     *
     * @return void
     */
    public function boot()
    {
        $this->registerPolicies();

        Passport::routes();
    }
}

最後,將配置檔案 config/auth.php 中授權看守器 guardsapidriver 選項改為 passport。此調整會讓你的應用程式在在驗證傳入的 API 的請求時使用 Passport 的TokenGuard 來處理:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],

(2) dingo

安裝

修改composer.json檔案,在 require中新增

"dingo/api": "2.0.0-alpha1"

然後使用命令列,進入專案目錄,執行

composer update

來更新、安裝新包

接下來就publish

php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"

 建立Api

修改routes/api.php

<?php

$api = app("Dingo\Api\Routing\Router");

    $api->version('v1', function ($api) {

        $api->group(["namespace" => "App\Api\Controllers"], function ($api) {
    
        //之後在這裡寫api

        });

    });

});

建立BaseController

<?php

namespace App\Api\V1\Controllers;

use Illuminate\Routing\Controller;

use Dingo\Api\Routing\Helpers;

class BaseController extends Controller

{

    use Helpers;

    //其他初始化操作

}