【问题标题】:Passport auth:api middleware not working anymore after Laravel 5.8 upgradePassport auth:api 中间件在 Laravel 5.8 升级后不再工作
【发布时间】:2019-11-26 04:59:13
【问题描述】:

我最近将我的 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 在升级之前可以正常工作。我真的不知道发生了什么。

【问题讨论】:

  • return response()->json(['test' => 'test']); 呢?
  • 顺便问一下,你能删除/评论所有其他路线吗?也许有一些冲突。您无法从任何地方获得 200 响应)
  • 感谢您的帮助。这两件事完全一样,所以这不是问题。而且我已经尝试检查路线之间的冲突。
  • 你能把你的repo上传到git吗?

标签: laravel laravel-passport


【解决方案1】:

您在header 中提到,响应应该是json 格式,而您返回的是non-json 格式的响应。

你应该使用

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

而不是

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

【讨论】:

  • 感谢您的帮助。这两件事完全一样,所以这不是问题。
猜你喜欢
  • 2018-09-16
  • 2017-03-23
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
  • 2023-03-14
  • 2020-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多