組み込みのTokenGuard
には、storageKey
フィールドを変更する方法がありません。そのため、フィールドを設定する独自のGuard
クラスを作成し、Auth
にGuard
クラスを使用するように指示する必要があります。
最初に、TokenGuard
クラスを拡張する新しいGuard
クラスを作成します。この例では、それはapp/Services/Auth/MyTokenGuard.php
で作成されます。
namespace App\Services\Auth;
use Illuminate\Http\Request;
use Illuminate\Auth\TokenGuard;
use Illuminate\Contracts\Auth\UserProvider;
class MyTokenGuard extends TokenGuard
{
public function __construct(UserProvider $provider, Request $request)
{
parent::__construct($provider, $request);
$this->inputKey = 'api_key'; // if you want to rename this, as well
$this->storageKey = 'api_key';
}
}
あなたのクラスを作成したら、Auth
はそれについて知っている必要があります。
public function boot(GateContract $gate)
{
$this->registerPolicies($gate);
Auth::extend('mytoken', function($app, $name, array $config) {
return new \App\Services\Auth\MyTokenGuard(Auth::createUserProvider($config['provider']), $app['request']);
});
}
をそして最後に、あなたはあなたの新しいmytoken
ガードを使用するようにAuth
を伝える必要があります:あなたは、あなたのAuthServiceProvider
サービスプロバイダにboot()
方法でこれを行うことができます。これはconfig/auth.php
設定ファイルで行われます。
'guards' => [
'api' => [
'driver' => 'mytoken',
'provider' => 'users',
],
],
なぜそれを変更したいですか?私のテーブルで – Digitlimit
を達成しようとしています、列の名前は 'api_key'です。したがって、laravelはトークンを検索するときに 'api_key'列を検索し、 'api_token'列は検索しません。 –