Il TokenGuard
integrato non ha un modo per modificare il campo storageKey
. Pertanto, è necessario creare la propria classe Guard
che imposta il campo e indicare a Auth
di utilizzare la classe Guard
.
Innanzitutto, iniziare creando una nuova classe Guard
che estende la classe TokenGuard
di base. In questo esempio, viene creato il 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';
}
}
Una volta creata la vostra classe, è necessario lasciare che Auth
sapere. È possibile farlo nel metodo boot()
del provider di servizi 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']);
});
}
E, infine, è necessario dire Auth
per utilizzare il nuovo mytoken
guardia. Questo viene fatto nel file di configurazione config/auth.php
.
'guards' => [
'api' => [
'driver' => 'mytoken',
'provider' => 'users',
],
],
perché vuoi cambiarlo? Cosa stai cercando di ottenere – Digitlimit
nella mia tabella, il nome della colonna è 'api_key'. Pertanto, voglio che laravel cerchi la colonna 'api_key' e non la colonna 'api_token' durante la ricerca del token. –