0

长期阅读,但新加入社区。我有一个神秘的问题想寻求帮助。由于这是当前在生产中运行的代码的一部分,我需要编辑部分信息,并在需要时提供信息。如果需要,我还将制作一个新的示例代码,以确保我们都可以测试并指导我以正确的方式解决问题。

目前,有一个 Web 应用程序 (django/wagtail/coderedcms) 后端需要转换为移动应用程序。为了允许移动应用程序与后端服务器通信,我使用 Django-rest-framework 实现了一个 API 端点。为了对用户进行身份验证,我已经使用 Django-rest-simplejwt 实现了一个简单的身份验证端点。这部分工作正常。该应用程序的要求之一是用户必须能够通过移动应用程序查看/更新他们的个人资料。

在我的本地主机中的开发服务器中工作时,行为符合预期,每个用户都可以使用应用程序登录,后端将发送回一个令牌,随后将使用 tokan 访问应用程序的各个部分。

当在生产中实现相同的代码库时(当前处于 UAT 阶段)发现一个行为,如果多个用户同时登录,服务器将仅返回第一个请求配置文件的用户的配置文件。
含义:
用户 A 登录 ....
用户 B 登录 ....
用户 B 请求查看他的个人资料(显示个人资料 B)
用户 A 请求查看他的个人资料(显示个人资料 B)<- 正确的行为应该是显示配置文件 A

这让我感到困惑,因为在本地主机上进行测试时,行为是:
用户 A 登录 ....
用户 B 登录 ....
用户 B 请求查看他的个人资料(显示个人资料 B)
用户 A 请求查看他的个人资料(显示配置文件 A)

我不知道这是由于 docker、nginx 还是 django 生产设置造成的。
但是,现在我只能缩小到 Nginx 和 docker,因为我在 localhost 中使用相同的配置,除了 debug=true 状态。

任何帮助或指针都会很有用。

我提前感谢所有阅读并回答这个愚蠢但神秘的问题的人

真诚的,
阿什拉夫

编辑

回复 Ogulcan Olguner

来自生产服务器的 Postman 在标头中使用此响应

allow →GET, POST, OPTIONS
cache-control →max-age=300
connection →keep-alive
content-encoding →gzip
content-type →application/json
date →Wed, 25 Nov 2020 20:59:03 GMT
expires →Wed, 25 Nov 2020 21:03:30 GMT
server →nginx/1.17.4
strict-transport-security →max-age=31536000
transfer-encoding →chunked
vary →Accept, Origin, Cookie
x-cdn →Incapsula
x-content-type-options →nosniff
x-frame-options →ALLOWALL
x-iinfo →4-22327133-22328885 NNYN CT(2 2 0) RT(1606337880159 62932) q(0 0 0 -1) r(1 1) U16
x-wagtail-cache →hit

对于本地主机

allow →POST, GET, OPTIONS
content-length →204
content-type →application/json
date →Wed, 25 Nov 2020 20:57:45 GMT
server →WSGIServer/0.2 CPython/3.8.5
vary →Accept, Origin
x-content-type-options →nosniff
x-frame-options →DENY
4

1 回答 1

0

我猜是因为没有太多关于为什么会导致错误的信息。如果您在生产中没有运行单独的缓存系统(例如 Redis),则此错误可能是由客户端引起的。您是否使用 Postman 之类的工具尝试过相同的场景?

于 2020-11-25T22:10:05.573 回答