带有API保护的Laravel 5.2 Multi-Auth使用错误的表

Luc*_*sar 12 php authentication laravel-5.2

我正在尝试使用多auth系统工作,用户可以通过普通的Web门户登录,但是单独的实体数据库(例如,名为"机器人")也可以通过API保护令牌驱动程序登录.但无论我做什么,我的设置都不是将我的身份验证后卫指向正确的机器人数据库,并不断尝试通过令牌验证这些请求(由于用户没有令牌,因此失败).

有人能帮我找到我出错的地方吗?

我首先在Kernel.php中组建了一个中间件组:

'api' => [
    'throttle:60,1',
        'auth:api',
],
Run Code Online (Sandbox Code Playgroud)

这使用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,
    ],
],
Run Code Online (Sandbox Code Playgroud)

中间件在routes.php中调用

Route::group(['middleware' => 'api'], function () {
    Route::get('api/request', 'API\RequestController@index');
});
Run Code Online (Sandbox Code Playgroud)

它使用这个模型:

<?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',
    ];
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

更新:进一步检查时,似乎auth.php中的大多数设置都没有正确应用 - 有什么方法可以强制这些设置生效吗?

Luc*_*sar 4

实际问题/解决方案:

Laravel 有一个单独的、很少提及的缓存,专门为其配置文件而存在。普通的缓存和类重置方法(例如composer dump-autoload和 )php artisan cache:clear不会影响此缓存,这导致我的 auth.php 文件中的所有设置都没有生效的混乱状态。

清除此缓存的正确方法是使用以下命令:

php artisan config:cache

php artisan config:clear

这些解决了我的问题。