como mudar a coluna api_token no guarda token

Laravel 5.5

Eu quero mudar a direção do token api que usou no TokenGaurd , então criei um guarda personalizado chamado CafeTokenGaurd estende TokenGuard, eu defino __construir a function nela como o que eu quero, algo assim:

public function __construct(UserProvider $provider, Request $request) { parent::__construct($provider, $request); $this->inputKey = 'api_key'; // I want changing this part $this->storageKey = 'api_key'; } 

Agora eu quero definir api_key da relação com a tabela de usuários como esta:

 device_user table -> token 

Eu quero definir tokens específicos para cada dispositivo que o usuário tenha, e eu quero definir a chave de input e de armazenamento da chave api nesta coluna na tabela dinâmica entre usuários e dispositivos,

como eu deveria isso ?!

obrigado

Como você precisa alterar a forma como o usuário é recuperado do database, você realmente precisa criar e usar um UserProvider personalizado, e não uma Guard personalizada. Você só precisará do guarda personalizado se você quiser renomear a chave de input ou a chave de armazenamento de api_token .

Então, você precisará de uma nova class UserProvider personalizada que saiba como recuperar seu usuário com as credenciais fornecidas (token), e você precisará dizer à Auth que use sua nova class UserProvider personalizada.

Primeiro, supondo que você ainda esteja usando Eloquent, comece criando uma nova class UserProvider que estenda a class base EloquentUserProvider . Neste exemplo, ele é criado no app/Services/Auth/MyEloquentUserProvider.php . Nesta class, você precisará replace a function retrieveByCredentials com os detalhes sobre como recuperar o usuário com o token fornecido.

 namespace App\Services\Auth; use Illuminate\Auth\EloquentUserProvider; class MyEloquentUserProvider extends EloquentUserProvider { /** * Retrieve a user by the given credentials. * * @param array $credentials * @return \Illuminate\Contracts\Auth\Authenticatable|null */ public function retrieveByCredentials(array $credentials) { if (empty($credentials)) { return; } // $credentials will be an array that looks like: // [ // 'api_token' => 'token-value', // ] // $this->createModel() will give you a new instance of the class // defined as the model in the auth config for your application. // Your logic to find the user with the given token goes here. // Return found user or null if not found. } } 

Uma vez que você criou sua class, você precisa deixar Auth saber sobre isso. Você pode fazer isso no método boot() no seu provedor de serviços AuthServiceProvider . Este exemplo usará o nome “myeloquent”, mas você pode usar o que quiser (exceto “eloquent” e “database”).

 public function boot() { $this->registerPolicies(); Auth::provider('myeloquent', function($app, array $config) { return new \App\Services\Auth\MyEloquentUserProvider($app['hash'], $config['model']); }); } 

E, finalmente, você precisa informar a Auth para usar seu novo provedor de usuário myeloquent . Isso é feito no arquivo de configuração config/auth.php .

 'providers' => [ 'users' => [ 'driver' => 'myeloquent', // this is the provider name defined above 'model' => App\User::class, ], ], 

Você pode ler mais sobre como adicionar provedores de usuários personalizados na documentação aqui .