[英]Laravel Passport API Authentication not working with Bearer Token
我目前正在开发Laravel应用程序。 在应用程序内部,我需要创建一个公共api,如果客户端获得了访问令牌,则需要可以对其进行访问。
因此,我正在使用laravel / passport软件包。
检索access_token工作正常。 关键部分是使用此访问令牌进行身份验证,并从受保护的路由获取json数据作为响应。
安装程序如下:
使用Laravel 5.6.30和Passport 6.0.7时,cookie序列化被禁用。
/app/Providers/AuthServiceProvider.php
$this->registerPolicies();
Passport::withoutCookieSerialization(); // because of the Laravel Update
Passport::routes();
Passport::tokensExpireIn(Carbon::now()->addDays(20));
Passport::refreshTokensExpireIn(Carbon::now()->addDays(20));
如前所述在这里我改变了令牌的到期时间,使他们不溢出或用开始-
在这里 @adamj提到要看看mapApiRoutes()
/app/Providers/RouteServiceProviders.php
protected function mapApiRoutes()
{
Route::prefix('api')
->middleware('auth:api')
->namespace($this->namespace)
->group(base_path('routes/api.php'));
}
我向我的API发送的请求设置了以下标头:
Accept: application/json
Authorization: Bearer {my_access_token}
我尝试在邮递员内访问的路线如下:
Route::group(['middleware' => ['auth:api']], function () {
Route::get('/hello/world', function () {
return 'Hello World';
});
});
这样,响应始终是401的HTTP状态。有人可以帮忙吗?
我真的不知道如何解决这个问题。
谢谢问候!
该错误不在Laravel内部。 该错误与邮递员有关。
在“授权”选项卡中,您可以选择一种类型。 除非您不选择No Auth,否则您手动设置的Header将被Postman取代。
希望这可以对任何人有帮助。
这是因为默认情况下,Apache不会将授权标头传递给PHP。 我找到了这个解决方案:
https://support.deskpro.com/cn/kb/articles/missing-authorization-headers-with-apache
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.