gpt4 book ai didi

python - Django:如何测试用户当前是否登录

转载 作者:行者123 更新时间:2023-11-28 18:45:23 24 4
gpt4 key购买 nike

我需要一些帮助来了解如何测试用户当前是否登录。我在网上搜索了一下,发现有view方法的解决方案可以从请求中拉出用户并进行测试:

if request.user.is_authenticated():

但是,在我的情况下,我需要如下内容:

user = User.objects.get(id=1)
if user.is_logging_in():
# do something
else:
# do something else

Django 有这种功能吗?谢谢!

最佳答案

我不认为该信息以受支持的方式存在。我的理解是用户认证系统使用 SessionMiddleware存储 session 是否有与之关联的经过身份验证的用户。澄清一下,当用户登录时, session 会存储数据,表明另一端的客户端是某某用户。

您需要做的是遍历所有 session 并确定该 session 是否有关联用户,如果有,该用户是谁。据我所知,没有办法遍历 session ,但我可能是错的。

来自 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)

关于如何存储与登录/注销相关的信息,我将留给您,但模型将是一种很好的方式。我应该指出,我认为这不包括用户凭据超时(从 session 超时)的情况。

另外,我刚刚遇到this answer哪些链接here这是一个跟踪活跃用户的项目。我不确定它增加了多少开销,但只是想我会添加它。

关于python - Django:如何测试用户当前是否登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21148011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com