未定义 guard [api] 的授权驱动程序 [passport]

Auth driver [passport] for guard [api] is not defined

我正在使用 Laravel 5.7 和 oauth2 通行证。当我尝试通过邮递员访问 /api/user 路由时出现此错误。

可能是你没有设置好你的守卫

请先将您的保护驱动程序设置检查到 config/auth.php

Passport 包含一个 authentication guard,它将验证传入请求的访问令牌。一旦你配置 api 守卫使用通行证 driver,你只需要在任何需要有效访问令牌的路由上指定 auth:api 中间件:

Route::get('/user', function () {
    //
})->middleware('auth:api');

当调用受 Passport 保护的路由时,您的应用程序的 API 消费者应在其请求的 Authorization header 中将其访问令牌指定为 Bearer 令牌.例如,当使用 Guzzle HTTP 库时:

$response = $client->request('GET', '/api/user', [
    'headers' => [
        'Accept' => 'application/json',
        'Authorization' => 'Bearer '.$accessToken,
    ],
]);

我发现了问题。实际上我使用的是 Swoole 服务器而不是 php-fpm。我必须将 Passport class 添加到 swoole 配置文件中的提供数组 swoole_http.php .

我运行进入了类似的情况,你需要配置你的driver到你的passport里面config/auth.php 文件。 对于我的情况,我发现了一个虚拟命令 "passportphp artisan passport:keys instead of "passport""

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

接下来仔细检查您的 headers 并确保设置

授权:"Bearer + token"和接受Application/json

如果您在 config/auth 中将“passport”大写,也会出现此问题。php :

正确:

'api' => [
    'driver' => 'passport',

错误:

'api' => [
    'driver' => 'Passport',

注意护照首字母不能大写!