ユーザ用ツール

サイト用ツール


11_php:02_framework:01_laravel:43_api_token

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

11_php:02_framework:01_laravel:43_api_token [2020/01/17 22:22] (現在)
matsui 作成
ライン 1: ライン 1:
 +====== 43 Laravel APIトークン名(api_token)を変更 ======
  
 +LaravelでAPIを作成するときに、デフォルトトークン名は、「api_token」です。
 +
 +Voyagerを利用してて、この環境だとUsersのトークンカラムが「remember_token」になっていた。
 +そのため、remember_tokenに変更する手順をメモ
 +
 +Voyager 1.2
 +Laravel 5.8
 +
 +
 +===== デフォルトのトークン名 =====
 +
 +デフォルトのトークン名が記述されている場所は下記です。
 +<​code>​
 +vendor/​laravel/​framework/​src/​Illuminate/​Auth/​AuthManager.php: ​           $config['​input_key'​] ?? '​api_token',​
 +vendor/​laravel/​framework/​src/​Illuminate/​Auth/​AuthManager.php: ​           $config['​storage_key'​] ?? '​api_token',​
 +vendor/​laravel/​framework/​src/​Illuminate/​Auth/​TokenGuard.php: ​       $inputKey = '​api_token',​
 +vendor/​laravel/​framework/​src/​Illuminate/​Auth/​TokenGuard.php: ​       $storageKey = '​api_token',​
 +</​code>​
 +
 +===== カスタムガード作成 =====
 +<​code|app/​Services/​Auth/​MyTokenGuard.php>​
 +<?php
 +namespace App\Services\Auth;​
 +
 +use Illuminate\Auth\TokenGuard;​
 +use Illuminate\Contracts\Auth\UserProvider;​
 +use Illuminate\Http\Request;​
 +use Illuminate\Support\Carbon;​
 +use Illuminate\Support\Facades\Log;​
 +
 +class MyTokenGuard extends TokenGuard {
 +
 +    /**
 +     * Create a new authentication guard.
 +     *
 +     * @param ​ \Illuminate\Contracts\Auth\UserProvider ​ $provider
 +     * @param ​ \Illuminate\Http\Request ​ $request
 +     * @return void
 +     */
 +    public function __construct(UserProvider $provider, Request $request)
 +    {
 +        // 「api_token」から「api_key」にキーを変更する.
 +        // inputKey(1つ目のapi_key)が、GET/​POSTパラメータから取得するキー.
 +        // storageKey(2つ目のapi_key)が、DBのカラム名.
 +        parent::​__construct($provider,​ $request, '​remember_token',​ '​remember_token'​);​
 +    }
 +}
 +</​code>​
 +
 +
 +===== カスタムガードをアプリに登録 =====
 +
 +<​code|app/​Providers/​AuthServiceProvider.php>​
 +<?php
 +
 +namespace App\Providers;​
 +
 +use App\Services\Auth\MyTokenGuard;​
 +use Illuminate\Support\Facades\Gate;​
 +use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;​
 +use Illuminate\Support\Facades\Auth;​
 +
 +class AuthServiceProvider extends ServiceProvider
 +{
 +    /**
 +     * The policy mappings for the application.
 +     *
 +     * @var array
 +     */
 +    protected $policies = [
 +        // '​App\Model'​ => '​App\Policies\ModelPolicy',​
 +    ];
 +
 +    /**
 +     * Register any authentication / authorization services.
 +     *
 +     * @return void
 +     */
 +    public function boot()
 +    {
 +        $this->​registerPolicies();​
 +
 +        $this->​app['​auth'​]->​extend('​remember_token',​ function($app,​ $name, array $config) {
 +            return new MyTokenGuard(Auth::​createUserProvider($config['​provider'​]),​ $app['​request'​]);​
 +        });
 +        //
 +    }
 +}
 +</​code>​
 +
 +===== app/​config/​auth.php =====
 +
 +あとは設定のdriverを修正してあげるだけ
 +
 +<​code|app/​config/​auth.php>​
 +    '​guards'​ => [
 +
 +        '​api'​ => [
 +            '​driver'​ => '​remember_token',​
 +            '​provider'​ => '​users',​
 +            '​hash'​ => false,
 +        ],
 +</​code>​
 +{{tag>​Laravel}}
11_php/02_framework/01_laravel/43_api_token.txt · 最終更新: 2020/01/17 22:22 by matsui

Yesterday:760 Today:016 Total:03586