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

时间:2018-10-07 12:52:06

标签: php laravel oauth

我目前正在开发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));

here所述,我更改了令牌的到期时间,以使它们不会溢出或以-开头。

here上@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状态。 有人可以帮忙吗?

我真的不知道如何解决此问题。

谢谢!

2 个答案:

答案 0 :(得分:1)

错误不在Laravel内部。 该错误与邮递员有关。

在“授权”选项卡中,您可以选择一种类型。除非您不选择 No Auth ,否则您手动设置的Header将被Postman取代。

希望这对任何人都有帮助。

答案 1 :(得分:-1)

检查您的授权标头,它真的发送到php吗?

https://support.deskpro.com/en/kb/articles/missing-authorization-headers-with-apache