繁体   English   中英

Laravel Passport API身份验证不适用于承载令牌

[英]Laravel Passport API Authentication not working with Bearer Token

我目前正在开发Laravel应用程序。 在应用程序内部,我需要创建一个公共api,如果客户端获得了访问令牌,则需要可以对其进行访问。

因此,我正在使用laravel / passport软件包。

检索access_token工作正常。 关键部分是使用此访问令牌进行身份验证,并从受保护的路由获取json数据作为响应。

安装程序如下:

  • Laravel 5.7.6
  • Laravel Passport 6.0.7

使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM