laravel 未定义guard [API]的验证驱动程序[passport]

sxissh06  于 2022-12-19  发布在  其他
关注(0)|答案(6)|浏览(283)

我正在使用Laravel 5. 7和passport for oauth2。当我试图使用postman访问/API/user路由时,我收到了这个错误。

qgzx9mmu

qgzx9mmu1#

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

ni65a41a

ni65a41a2#

也许你还没安排好警卫。
请先检查config/auth.php中的防护驱动程序设置。

oprakyz7

oprakyz73#

Passport包括一个验证保护,它将验证传入请求的访问令牌。一旦您配置了API保护以使用passport驱动程序,您只需要在任何需要有效访问令牌的路由上指定auth:api中间件:

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

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

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

x3naxklr4#

我遇到了类似的情况,您需要在config/auth.php文件中将driver配置为passport。* 对于我的情况,我发现了一个伪命令“passportphp artisan passport:keys*”而不是“passport””

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

接下来仔细检查您的标题,并确保您设置

授权:“承载者+令牌”和接受应用程序/json

mutmk8jj

mutmk8jj5#

如果你在config/auth.php中把“passport”大写也会出现这个问题:
正确:

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

错误:

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

注意护照的第一个字母不能大写!

nx7onnlm

nx7onnlm6#

这是一个愚蠢的解决方案,但我刚刚有同样的情况,所以也许,有人会发现这是有用的。
我在我的部署脚本中使用php artisan clear-compiled命令清除生成的passport密钥,所以每当我调用auth中间件下的任何路由时,我都会得到这个错误。
因此,解决方案是再次调用php artisan passport:install命令,一切都将正常工作。

相关问题