来自同一端点的Laravel Passport响应同时使用来自两个用户的两个不同访问令牌返回第一个用户

来自同一端点的Laravel Passport响应同时使用来自两个用户的两个不同访问令牌返回第一个用户,laravel,api,laravel-passport,Laravel,Api,Laravel Passport,我正在使用带有Passport 7.2的Laravel 5.8为我的应用程序构建API。我正在使用密码授权进行身份验证 我已经创建了从注册到登录的一切,一切似乎都正常运行。我能够获取访问令牌和刷新令牌,并访问连接了中间件auth:api的路由 在我的路线中,我有: Route::group(['middleware' => ['auth:api']], function () { ... Route::get('test', function (Request $request)

我正在使用带有Passport 7.2的Laravel 5.8为我的应用程序构建API。我正在使用密码授权进行身份验证

我已经创建了从注册到登录的一切,一切似乎都正常运行。我能够获取访问令牌和刷新令牌,并访问连接了中间件auth:api的路由

在我的路线中,我有:

Route::group(['middleware' => ['auth:api']], function () {
...
    Route::get('test', function (Request $request) {
        return $request->user(); 
    });
...
});
当我使用标题Authorization:Bearer access\令牌调用这个/api/test URL时,我得到的是当前经过身份验证的用户。那很好用

我正在用Postman测试这些端点,但如果我使用浏览器中的javascript进行测试,一切都是一样的

问题是当我从两个不同的用户获得两个不同的访问令牌时。如果我使用一个访问令牌调用此URL,我将获得正确的用户数据作为响应,如果我等待几秒钟并使用第二个访问令牌调用相同的URL,我将获得正确的第二个用户数据作为响应。但是,如果我同时使用这两个访问令牌调用此URL两次(先调用,例如半秒后调用),我会在两个请求中得到第一个调用用户数据作为响应

我希望你们能理解问题所在

这可能是缓存问题,或者是会话问题(即使api是无状态的)

如果你需要更多的信息,告诉我

首先,我认为这是浏览器缓存的问题,但邮递员也是如此。我也尝试过一次使用谷歌Chrome,第二次使用Mozilla,一切都一样


如果您对可能出现的问题有任何想法,我将不胜感激:D

我找到了解决方案。这不是拉威尔或护照问题

问题是: 在我的服务器上,我们配置了Nginx,这个Engintron有一些微缓存机制

可以完全禁用此微缓存,也可以使用请求中的标头禁用此微缓存(缓存控制:专用)

微缓存正在将GET请求缓存到URL 1秒钟,并忽略不同的授权头。这就是为什么如果我在不到1秒的时间内发出这两个请求,我会得到两个不同授权头的相同用户数据


我希望这将有助于其他人在未来。如果有人需要更多信息,请随时与我联系:D

我已找到解决方案。这不是拉威尔或护照问题

问题是: 在我的服务器上,我们配置了Nginx,这个Engintron有一些微缓存机制

可以完全禁用此微缓存,也可以使用请求中的标头禁用此微缓存(缓存控制:专用)

微缓存正在将GET请求缓存到URL 1秒钟,并忽略不同的授权头。这就是为什么如果我在不到1秒的时间内发出这两个请求,我会得到两个不同授权头的相同用户数据

我希望这将有助于其他人在未来。如果有人需要更多信息,请随时与我联系:D