【发布时间】:2019-10-17 03:29:43
【问题描述】:
我正在使用 Laravel 5.8 和 Passport 7.2 为我的应用程序构建 API。我正在使用 password_grant 进行身份验证。
我已经创建了从注册到登录的所有内容,并且一切似乎都正常运行。我能够获取 access_token 和 refresh_token 并访问附加了中间件 auth:api 的路由。
在我的路线中,我有这个:
Route::group(['middleware' => ['auth:api']], function () {
...
Route::get('test', function (Request $request) {
return $request->user();
});
...
});
当我使用标题 Authorization: Bearer access_token 调用此 /api/test URL 时,我正在获取当前经过身份验证的用户。这很好用。
我正在使用 Postman 测试这些端点,但如果我使用浏览器中的 javascript 进行测试,一切都是一样的。
问题是当我有来自两个不同用户的两个不同 access_token 时。如果我用一个 access_token 调用这个 URL,我会得到正确的用户数据作为响应,如果我等待几秒钟并用第二个 access_token 调用相同的 URL,我会得到正确的第二个用户数据作为响应。但是,如果我同时使用这两个 access_tokens 调用此 URL 两次(首先调用,例如在第二次调用半秒后),我将首先调用用户数据作为两个请求中的响应。
我希望你能明白什么是问题。
这可能是缓存问题,还是会话问题(即使 api 是无状态的)?
如果您需要更多信息,请告诉我。
首先我认为这是浏览器缓存问题,但在邮递员中也是如此。我还尝试使用 Google Chrome 处理一个请求,使用 Mozilla 处理第二个请求,一切都一样。
如果您对可能出现的问题有任何想法,我将不胜感激:D
【问题讨论】:
标签: laravel api laravel-passport