DJango:验证功能与验证用户名,密码和is_active

时间:2018-08-10 04:12:10

标签: django authentication

我正在研究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"

以上内容是否与身份验证功能具有相同的目的,或者还有其他需要检查的地方。

1 个答案:

答案 0 :(得分:1)

authenticate方法贯穿所有认证后端,并称为authenticate方法。

默认Django的身份验证后端为ModelBackend。如果您检查它的authenticate方法,您会发现它已经包含了您描述的所有步骤。