python - 由于多个并发请求,Django session cookie 丢失

标签 python django session cookies

我正在构建一个应用程序,其中客户端时不时地对服务器执行 ping 操作(我们先不谈原因)。当服务器处理这些请求时,它使用 request.user.is_authenticated() 检查客户端是否登录

看起来像这样:

def handle_ping_request(request):
    if request.user.is_authenticated():
       # Do something...
    else:
       # Do Something else...

我注意到有时服务器会立即收到一个登录请求,然后是一个 ping 请求(来自同一用户)。然后客户端成功登录,响应返回一个新的 session ID(登录用户的)并且(我猜)旧的 session ID(匿名用户的)被删除。处理 ping 请求时,其请求包含旧的 session ID。因此,ping 请求返回第三个 session ID,并且在客户端发出的下一个请求中,客户端不再登录。

我的登录代码如下所示:

if not request.user.is_authenticated():
    user = auth.authenticate(...credentials...)

    if user and user.is_active:
        auth.login(request, user)

您对如何避免这个问题有什么建议吗?最好不要让客户参与。

谢谢。

最佳答案

在服务器上处理这个可能太麻烦了,因为您必须创建某种信号量系统,该系统还会尝试猜测当前是否有任何 ping 来自也正在验证的客户端。我的建议是简单地更改客户端代码,使其在等待对其登录请求的响应时不执行 ping。

关于python - 由于多个并发请求,Django session cookie 丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4783206/

相关文章:

python - 使用 python 3 在 Windows 10 上运行服务器时出现 django 404 错误

PHP登录脚本生成 session 但不生成标题()移至主页

jquery - 使用 Ajax 调用跨域登录用户?

python - Django : Table doesn't exist

django - 为什么我们对静态文件使用不同的 Web 服务器?

django - GeoDjango 将 SRID 4326 转换为 SRID 3857

java - Android HTTPS 和 Cookie,API 级别 8

python - Flickr API 在提取所有带地理标记的照片时返回重复的照片

python - NLTK:如何根据句子图提取信息?

python - 使用 Python 进行 SQL 注入(inject) (WordPress)