Sto cercando di ottenere un sistema multi-auth che funzioni dove gli utenti possono accedere tramite il normale portale Web, ma un database separato di entità (denominato "robot" ad esempio) può anche accedere tramite un driver token di protezione API. Ma non importa quello che faccio, il setup che ho non sta indirizzando la mia guardia di autenticazione al database di Robot corretto e continua a provare ad autenticare queste richieste come utenti tramite token (che fallisce, perché gli utenti non hanno token).Laravel 5.2 Multi-Auth con API guard utilizza la tabella errata
Qualcuno può aiutarmi a trovare dove ho sbagliato?
Ho iniziato mettendo insieme un gruppo di middleware in Kernel.php:
'api' => [
'throttle:60,1',
'auth:api',
],
Questo utilizza le impostazioni in config/auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'robots',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'robots' => [
'driver' => 'eloquent',
'model' => App\Models\Robot::class,
],
],
Il middleware viene chiamato in routes.php
Route::group(['middleware' => 'api'], function() {
Route::get('api/request', 'API\[email protected]');
});
utilizza questo modello:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Contracts\Auth\Authenticatable;
class Robots extends Authenticatable
{
protected $fillable = [
'serial_number','api_token',
];
protected $guard = 'Robots';
protected $hidden = [
'api_token',
];
}
Qualche idea?
Aggiornamento: su un'ulteriore ispezione, sembra che la maggior parte delle impostazioni in auth.php non si stiano applicando correttamente - c'è un modo in cui posso forzare queste impostazioni ad avere effetto?
Utilizzo del servizio Web? –
Cosa intendi? Non sto utilizzando il middleware web, poiché genererà un'eccezione token per le chiamate API. – Luciasar
se si utilizza l'API quindi passare api_token sull'intestazione –