我正在研究Django项目:
我有一个包含用户名和密码的登录表单
通常,我观察到身份验证功能用于对用户进行身份验证并通过验证
user = authenticate(username, password)
我试图了解身份验证功能,但是发现它并不那么容易。
我不想使用身份验证功能,而是要通过以下方式检查身份验证:
1)检查用户名是否存在
2)检查密码是否匹配
3)检查is_active是否为真。
我可以通过以下方式做到这一点:
username = self.cleaned_data.get('username')
password = self.cleaned_data.get('password')
# check if user exists
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
user = None
#check if user is_active
if user.is_active:
user_active = true
else
user_active = false
#check the password
if user_active:
password_match = user.check_password(password):
else:
password_match = false
if password_match:
msg = "Login Successful"
else:
msg = "Login Failed"
以上内容是否与身份验证功能具有相同的目的,或者还有其他需要检查的地方。
答案 0 :(得分:1)
authenticate
方法贯穿所有认证后端,并称为authenticate
方法。
默认Django的身份验证后端为ModelBackend
。如果您检查它的authenticate
方法,您会发现它已经包含了您描述的所有步骤。