Próbuję uzyskać działający system multi-auth, w którym Użytkownicy mogą logować się za pośrednictwem normalnego portalu internetowego, ale osobną bazę danych podmiotów (na przykład "roboty")) może również zalogować się za pomocą sterownika tokena straży API. Ale bez względu na to, co robię, konfiguracja, którą mam, nie kieruje mojego zabezpieczenia uwierzytelniającego do poprawnej bazy danych Robota i nadal próbuje uwierzytelnić te żądania jako Użytkownicy za pomocą tokenów (które zawodzą, ponieważ użytkownicy nie mają tokenów).Laravel 5.2 Multi-Auth z ochroną API używa niewłaściwej tabeli
Czy ktoś może mi pomóc znaleźć miejsce, w którym popełniłem błąd?
zacząłem poprzez umieszczenie razem grupę middleware w Kernel.php:
'api' => [
'throttle:60,1',
'auth:api',
],
używa ustawienia w 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,
],
],
Middleware jest wywoływana w routes.php
Route::group(['middleware' => 'api'], function() {
Route::get('api/request', 'API\[email protected]');
});
używa tego modelu:
<?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',
];
}
Jakieś pomysły?
Aktualizacja: na dalszej kontroli, wydaje się, że większość ustawień auth.php nie stosują prawidłowo - czy istnieje jakiś sposób mogę zmusić te ustawienia odniosły skutek?
Korzystanie z usługi internetowej? –
Co masz na myśli? Nie używam oprogramowania pośredniczącego do stron WWW, ponieważ spowoduje to zgłoszenie wyjątku tokena dla wywołań API. – Luciasar
jeśli używasz API, to przepuść api_token w nagłówku –