我不认为该信息以受支持的方式存在。我的理解是,用户认证系统使用SessionMiddleware来存储会话是否具有与其关联的已认证用户。为了澄清,当用户登录时,会话存储数据,表明另一方的客户端是用户这样那样的。
你需要做的是遍历所有的会话,并确定会话是否有关联的用户,如果是,那么该用户是谁。据我所知,无法遍历会话,但我可能是错的。
从this answer我发现了一种可以达到同样效果的方法。
from django.contrib.auth.signals import user_logged_in, user_logged_out
def record_user_logged_in(sender, user, request, **kwargs):
# Record the user logged in
def record_user_logged_out(sender, user, request, **kwargs):
# Record the user logged out
user_logged_in.connect(record_user_logged_in)
user_logged_out.connect(record_user_logged_out)
我把它留给你为如何存储信息pertained到登录/退出,但模式将是这样做的一个很好的方式。我应该指出,我不认为这涵盖了用户证书超时的情况(从会话超时)。
另外,我刚刚遇到了this answer其中链接here这是一个跟踪活动用户的项目。我不知道它增加了多少开销,但只是想我会添加它。
你是指编写单元测试吗? –
@YerayDiazDiaz:不是在这种情况下,但我可能需要它在未来的测试。 –
我很好奇背后的用例是什么?对于“已登录”的编码在典型的基于HTTP的客户端 - 服务器应用程序中可能是一个具有挑战性的概念。例如。 is_authenticated()告诉您请求用户是否已通过身份验证,但在请求到达服务器时,他们可能已关闭浏览器窗口。我之前有过同样的问题,但意识到我正在寻找错误的东西。 –