繁体   English   中英

通过用户名检查用户是否登录 django

[英]Check if user is logged in or not django by username

在 django 登录中,我们可以输入if request.user.is_authenticated来检查用户是否登录。但是如果我们想通过输入用户名来检查特定用户的登录状态,我们会得到以下信息:

#Python
def checkLoginStatus(username):
    #do some checks here....
    return True or False

Django 不跟踪用户的登录 state。 它跟踪:

  • session 是否有效(未过期,存在于 session 商店等)
  • 用户最后一次验证自己并从未登录到登录(通过last_login

如果你想跟踪它,你需要自己做:

  • 添加带有可为空字段session_key用户配置文件 model
  • 为logged_in 和logged_out 事件添加信号接收器
  • 在登录事件时,从request.session获取 session 密钥(请求传递给信号)并将其存储在配置文件 model
  • 发生logged_out 事件时,将session_key设置为None
  • Now you can implement an is_logged_in property that retrieves the session key for a user from its profile model and then checks if the session is still valid by getting the session from the Session model. 如果有效,则用户已登录。

您可以使用查询来获取您想要检查 is_logged_in 的用户。

def checkLoginStatus(username):
    
    if User.objects.filter(username=username).exists():
        usr = User.objects.get(username=username)
        if usr.is_authenticated:
            return True
        else:
            return False
    else:
        print("No user exist with this {} username.".format(username))
        return False

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM