Built-in TokenGuard not able to change the storageKey field. Therefore, you will need to create your own Guard class, which sets this field, and tell Auth use your Guard class.
Start by creating a new Guard class that extends the TokenGuard base class. In this example, it is created in 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';
Once you have created your class, you need to tell Auth about it. You can do this in the boot() method of your AuthServiceProvider service AuthServiceProvider :
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']); }); }
And finally, you need to tell Auth to use your new mytoken . This is done in the config/auth.php configuration file.
'guards' => [ 'api' => [ 'driver' => 'mytoken', 'provider' => 'users', ], ],
source share