我正在使用Laravel 5. 7和passport for oauth2。当我试图使用postman访问/API/user路由时,我收到了这个错误。
qgzx9mmu1#
我发现了问题。实际上我使用的是Swoole服务器而不是php-fpm。我必须将Passport类添加到swoole配置文件swoole_http. php中的provides数组中。
ni65a41a2#
也许你还没安排好警卫。请先检查config/auth.php中的防护驱动程序设置。
config/auth.php
oprakyz73#
Passport包括一个验证保护,它将验证传入请求的访问令牌。一旦您配置了API保护以使用passport驱动程序,您只需要在任何需要有效访问令牌的路由上指定auth:api中间件:
Route::get('/user', function () { // })->middleware('auth:api');
调用受Passport保护的路由时,应用程序的API使用者应在其请求的Authorization标头中将其访问令牌指定为Bearer令牌。例如,使用Guzzle HTTP库时:
Authorization
Bearer
$response = $client->request('GET', '/api/user', [ 'headers' => [ 'Accept' => 'application/json', 'Authorization' => 'Bearer '.$accessToken, ], ]);
x3naxklr4#
我遇到了类似的情况,您需要在config/auth.php文件中将driver配置为passport。* 对于我的情况,我发现了一个伪命令“passportphp artisan passport:keys*”而不是“passport””
'api' => [ 'driver' => 'passport', 'provider' => 'users', 'hash' => false, ],
接下来仔细检查您的标题,并确保您设置
授权:“承载者+令牌”和接受到应用程序/json
mutmk8jj5#
如果你在config/auth.php中把“passport”大写也会出现这个问题:正确:
'api' => [ 'driver' => 'passport',
错误:
'api' => [ 'driver' => 'Passport',
注意护照的第一个字母不能大写!
nx7onnlm6#
这是一个愚蠢的解决方案,但我刚刚有同样的情况,所以也许,有人会发现这是有用的。我在我的部署脚本中使用php artisan clear-compiled命令清除生成的passport密钥,所以每当我调用auth中间件下的任何路由时,我都会得到这个错误。因此,解决方案是再次调用php artisan passport:install命令,一切都将正常工作。
php artisan clear-compiled
php artisan passport:install
6条答案
按热度按时间qgzx9mmu1#
我发现了问题。实际上我使用的是Swoole服务器而不是php-fpm。我必须将Passport类添加到swoole配置文件swoole_http. php中的provides数组中。
ni65a41a2#
也许你还没安排好警卫。
请先检查
config/auth.php
中的防护驱动程序设置。oprakyz73#
Passport包括一个验证保护,它将验证传入请求的访问令牌。一旦您配置了API保护以使用passport驱动程序,您只需要在任何需要有效访问令牌的路由上指定auth:api中间件:
调用受Passport保护的路由时,应用程序的API使用者应在其请求的
Authorization
标头中将其访问令牌指定为Bearer
令牌。例如,使用Guzzle HTTP库时:x3naxklr4#
我遇到了类似的情况,您需要在config/auth.php文件中将driver配置为passport。* 对于我的情况,我发现了一个伪命令“passportphp artisan passport:keys*”而不是“passport””
接下来仔细检查您的标题,并确保您设置
授权:“承载者+令牌”和接受到应用程序/json
mutmk8jj5#
如果你在config/auth.php中把“passport”大写也会出现这个问题:
正确:
错误:
注意护照的第一个字母不能大写!
nx7onnlm6#
这是一个愚蠢的解决方案,但我刚刚有同样的情况,所以也许,有人会发现这是有用的。
我在我的部署脚本中使用
php artisan clear-compiled
命令清除生成的passport密钥,所以每当我调用auth中间件下的任何路由时,我都会得到这个错误。因此,解决方案是再次调用
php artisan passport:install
命令,一切都将正常工作。