Python 通过用户名检查用户是否已登录django
在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):
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哦,谢谢!