Laravel 5.2 Multi-Auth с защитой API использует неправильную таблицу

Я пытаюсь получить многоадресную систему, в которой пользователи могут регистрироваться через обычный веб-портал, но отдельная база данных сущностей (например, "роботов" ) также может войти в систему через драйвер маркера защиты API, Но независимо от того, что я делаю, настройки, которые у меня есть, не направляют мою проверку подлинности в правильную базу данных Robot и продолжают пытаться аутентифицировать эти запросы как пользователи через токены (что не удается, потому что у пользователей нет токенов).

Может кто-нибудь помочь мне найти, где я ошибся?

Я начал с создания промежуточной группы в Kernel.php:

'api' => [
    'throttle:60,1',
        'auth:api',
],

Это использует настройки в 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,
    ],
],

Второе программное обеспечение вызывается в routes.php

Route::group(['middleware' => 'api'], function () {
    Route::get('api/request', 'API\[email protected]');
});

Он использует эту модель:

<?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',
    ];
}

Любые идеи?

Обновление: при дальнейших проверках, похоже, что большинство настроек в auth.php не применяются должным образом - можно ли каким-то образом заставить эти параметры вступить в силу?

Ответ 1

Актуальная проблема/решение:

Laravel имеет отдельный, редко упоминаемый кэш, который существует исключительно для его файлов конфигурации. Обычные методы кэширования и класса reset, такие как composer dump-autoload и php artisan cache:clear, не влияют на этот кеш, что приводит к моему запутанному состоянию отсутствия каких-либо параметров в файле auth.php.

Правильный способ очистки этого кеша - использовать команды:

php artisan config:cache

php artisan config:clear

Это решило мою проблему.

Ответ 2

В вашем config/auth.php вы указываете предоставленную модель, которая будет использоваться для поставщика роботов: 'model' => App\Models\Robot::class Однако ваш класс Robot определяется как class Robots extends Authenticatable, что является несоответствием имени класса.

Переименуйте свой класс в class Robot