Laravel - API 版本控制 /v2/ 端点总是 return 401

Laravel - API Versioning /v2/ endpoints always return 401

我目前正在开发 Laravel API,它使用 Laravel Passport (OAuth2)。我最近向我的 Laravel 应用程序 API 添加了一个 v2。在我的本地机器上一切正常。但是在我的测试服务器上,当我向 v2 端点发送请求时,应用程序总是抛出 401。

这是我的设置:

路由服务提供商:

protected function mapApiRoutes()
{
    Route::group([
        'middleware' => ['api', 'api_version:v1'],
        'namespace'  => "{$this->namespace}",
        'prefix'     => 'api',
    ], function ($router) {
        require base_path('routes/api.php');
    });    
    Route::group([
        'middleware' => ['api', 'api_version:v2'],
        'namespace'  => "{$this->namespace}\V2",
        'prefix'     => 'api/v2',
    ], function ($router) {
        require base_path('routes/api/api_v2.php');
    });
}

auth.php:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],

    'api_v2' => [
        'driver' => 'passport',
        'provider' => 'users_v2',
    ],
],

// ...

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\Base\User::class,
    ],
    'users_v2' => [
        'driver' => 'eloquent',
        'model' => App\Models\V2\Base\User::class,
    ],
],

routes/api_v2.php:

Route::group(['middleware' => ['auth:api_v2']], function() {
    Route::get('user', 'Base\UserController@authUserV2');
    // ...
});

API版本中间件:

public function handle(Request $request, Closure $next, $guard)
{
    if ($guard != 'v1') {
        // Morph user model
        $apiVersion = $guard == '' ? '' : ('\' . strtoupper($guard) . '\');
        Relation::morphMap([
            'App\User' => 'App\Models\Base\User',
            'App\Models\Base\User' => 'App\Models' . $apiVersion . 'Base\User'
        ]);

    config(['app.api.version' => $guard]);
    return $next($request);
}

请求在执行 API版本中间件之前抛出 401。

我不知道为什么它在我的本地机器上运行,但在我的测试服务器上却不行。此错误代码或机器相关吗?

编辑

我发现,一旦我将 api_v2 的守卫改回 users 而不是 users_v2 它就会起作用。但是它不使用 V2 用户模型,这当然会在我的控制器中引发错误。

经过 小时 的搜索,我发现了我的问题。 我本地计算机的数据库有一个较旧的 oauth_clients table,它不包含 provider 列。将我的测试服务器上的 provider 列更改为 NULL 后,一切正常!

有人知道是否可以在此列中指定多个提供商而不是全部允许吗?