未定义防护[api]的身份验证驱动程序[passport]

时间:2018-12-11 02:31:23

标签: laravel laravel-passport laravel-5.7

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

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

也许您还没有设置警卫。

请先检查您将驱动程序设置为config/auth.php

答案 2 :(得分:0)

Passport包含一个authentication guard,它将验证传入请求上的访问令牌。将api Guard配置为使用通行证驱动程序后,只需在需要有效访问令牌的任何路由上指定auth:api中间件:

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

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

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

答案 3 :(得分:0)

遇到类似情况,您需要在 config / auth.php 文件中将驱动程序配置为 passport 。  对于我来说,我发现了一个虚拟命令“ passportphp artisanpassport:keys 而不是“ passport””

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

接下来请仔细检查标题,并确保已设置

授权:“承载者+令牌”和接受 Application / json

答案 4 :(得分:0)

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

正确:

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

错误:

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

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