このページの翻訳:
- 日本語 (ja)
- English (en)
最近の更新
Tag Cloud
このページへのアクセス
今日: 11 / 昨日: 2
総計: 744
- Dokuwiki.fl8.jp(3177)
- 13 CentOS6メール設定(62)
- FreeBSD カーネル再構築(59)
- 75 Proftpd(56)
- 01 Galera構築(52)
最近の更新
このページへのアクセス
今日: 11 / 昨日: 2
総計: 744
LaravelでAPIを作成するときに、デフォルトトークン名は、「api_token」です。
Voyagerを利用してて、この環境だとUsersのトークンカラムが「remember_token」になっていた。
そのため、remember_tokenに変更する手順をメモ
Voyager 1.2
Laravel 5.8
デフォルトのトークン名が記述されている場所は下記です。
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',
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'); } }
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']);
});
//
}
}
あとは設定のdriverを修正してあげるだけ
app/config/auth.php
'guards' => [ 'api' => [ 'driver' => 'remember_token', 'provider' => 'users', 'hash' => false, ],