Wbudowany TokenGuard
nie ma możliwości modyfikacji pola storageKey
. Dlatego musisz utworzyć własną klasę Guard
, która ustawi pole i powiesz Auth
, aby użyć swojej klasy Guard
.
Najpierw należy utworzyć nową klasę Guard
, która rozszerza klasę podstawową TokenGuard
. W tym przykładzie, jest on tworzony na 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';
}
}
Po utworzeniu klasy, trzeba pozwolić Auth
o tym wiedzieć. Można to zrobić w metodzie boot()
dostawcy AuthServiceProvider
usług:
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']);
});
}
I wreszcie, trzeba powiedzieć Auth
do korzystania z nowego mytoken
strażnika. Dokonuje się tego w pliku konfiguracyjnym config/auth.php
.
'guards' => [
'api' => [
'driver' => 'mytoken',
'provider' => 'users',
],
],
dlaczego chcesz to zmienić? Co próbujesz osiągnąć – Digitlimit
w mojej tabeli, nazwa kolumny to "api_key". Dlatego chcę, aby laravel szukał kolumny "api_key", a nie kolumny "api_token" podczas wyszukiwania tokena. –