首页 > 解决方案 > Passport auth:api 中间件在 Laravel 5.8 升级后不再工作

问题描述

我最近将我的 Laravel 应用程序从 5.6 升级到了 5.8,我的 Passport api 不再工作了。

'oauth/token' 调用完美运行,我像以前一样得到了我的 access_token。然后,在使用通常的调用时:

$response = $http_client->request('GET', 'api/test', [
                'headers' => [
                    'Accept'        => 'application/json',
                    'Authorization' => 'Bearer ' . $access_token,
                ],
            ]);

到一个非常基本的受保护路线:

Route::middleware('auth:api')->get('test', function () {
    return ['test' => 'test'];
});

我从来没有得到预期的回应。无论我在路由函数中放什么,我总是得到一个空的 200 响应。

顺便说一句,没有 auth:api 中间件的同一条路线也可以正常工作:

Route::get('test', function () {
    return ['test' => 'test'];
});

似乎 api:auth 中间件不再起作用,我真的不知道为什么。

我的 API 在升级之前可以正常工作。我真的不知道发生了什么。

标签: laravellaravel-passport

解决方案


您在header该响应中提到应该采用json格式,并且您正在返回带有non-json格式的响应。

你应该使用

return response()->json(['test' => 'test']);

而不是

return ['test' => 'test'];


推荐阅读