我目前正在开发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));
如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状态。 有人可以帮忙吗?
我真的不知道如何解决此问题。
谢谢!
答案 0 :(得分:1)
错误不在Laravel内部。 该错误与邮递员有关。
在“授权”选项卡中,您可以选择一种类型。除非您不选择 No Auth ,否则您手动设置的Header将被Postman取代。
希望这对任何人都有帮助。
答案 1 :(得分:-1)
检查您的授权标头,它真的发送到php吗?
https://support.deskpro.com/en/kb/articles/missing-authorization-headers-with-apache