Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过用户名检查用户是否已登录django_Python_Django_Validation_Authentication - Fatal编程技术网

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

Python 通过用户名检查用户是否已登录django,python,django,validation,authentication,Python,Django,Validation,Authentication,在django登录中,我们可以键入if request.user.is\u authenticated检查用户是否登录。 但是,如果我们想通过输入用户名来检查特定用户的登录状态,我们会得到以下结果: #Python def checkLoginStatus(username): #do some checks here.... return True or False 您可以使用查询获取要检查的用户是否已登录 def checkLoginStatus(username):

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

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


您可以使用查询获取要检查的用户是否已登录

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

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

  • 会话是否有效(未过期、存在于会话存储中等)
  • 用户最后一次自我验证并从未登录变为已登录(通过
如果你想跟踪它,你需要自己做:

  • 添加一个可为空的字段
    session\u key
  • 添加已登录和已注销事件
  • 登录事件后,从
    request.session
    (请求被传递到信号)获取会话密钥,并将其存储在配置文件模型中
  • 注销事件发生后,将会话键设置为无
  • 现在,您可以实现一个
    is\u logged\u in
    属性,该属性从用户的配置文件模型检索用户的会话密钥,然后通过从
    会话
    模型获取会话来检查会话是否仍然有效。如果有效,则用户已登录

实现
身份验证的方法将始终返回true。只有匿名用户返回False。你说的是request.user,但这里我们使用局部变量作为用户。但为了安全起见,我正在编辑我的答案以使用不同的变量名。?@Melvyn当然会检查它。我尝试过了……正如@Melvyn所说的。。.它总是返回True…而且只有匿名用户才会返回false哦,谢谢!