【发布时间】:2011-06-14 13:39:18
【问题描述】:
我正在构建一个应用程序,在该应用程序中,客户端不时地对服务器执行 ping 操作(我们先不讨论原因)。当服务器处理这些请求时,它会使用 request.user.is_authenticated() 检查客户端是否登录
看起来像这样:
def handle_ping_request(request):
if request.user.is_authenticated():
# Do something...
else:
# Do Something else...
我注意到,有时服务器会立即收到一个登录请求,然后是一个 ping 请求(来自同一用户)。然后客户端成功登录,响应返回一个新的会话 ID(登录用户的),并且(我猜)旧的会话 ID(匿名用户的)被删除。当 ping 请求被处理时,它的请求包含旧的 session-ID。因此,ping 请求返回第三个会话 ID,并且在客户端发出下一个请求时,客户端不再登录。
我的登录代码如下所示:
if not request.user.is_authenticated():
user = auth.authenticate(...credentials...)
if user and user.is_active:
auth.login(request, user)
您对如何避免这个问题有什么建议吗?最好不涉及客户。
谢谢。
【问题讨论】:
标签: python django session cookies