gpt4 book ai didi

python - Django - 使用 AUTH_PASSWORD_VALIDATORS 验证密码

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:25 25 4
gpt4 key购买 nike

我有一个自定义的 User 模型,它只包含两个必填字段:emailpassword

我还有一个自定义的 UserCreationForm,提示用户输入他们的 emailone password

不幸的是,除了 min_length 之外,表单不会验证密码。

如何在 settings.AUTH_PASSWORD_VALIDATORS 中启用密码验证器?该对象是 distc 的列表,而不是验证器,所以我不确定如何使用它们。

class UserCreationForm(forms.ModelForm):
password1 = forms.CharField(
widget=forms.PasswordInput(attrs=form_attrs.password),
min_length=8,
strip=True,
)

class Meta:
model = User
fields = ('email',)
widgets = {
'email': forms.EmailInput(attrs=form_attrs.email),
}

def save(self, commit=True):
user = super().save(commit=False)
user.set_password(self.cleaned_data.get('password1'))
if commit:
user.save()
return user

最佳答案

正如另一位回答者提到的,Django 使用 django.contrib.auth.password_validation.validate_password 方法来验证密码。您可以创建一个 clean_password1 方法并将其添加到其中,如下所示:

class UserCreationForm(forms.ModelForm):
password1 = forms.CharField(
widget=forms.PasswordInput(attrs=form_attrs.password),
min_length=8,
strip=True,
)

class Meta:
model = User
fields = ('email',)
widgets = {
'email': forms.EmailInput(attrs=form_attrs.email),
}

def clean_password1(self):
password1 = self.cleaned_data.get('password1')
try:
password_validation.validate_password(password1, self.instance)
except forms.ValidationError as error:

# Method inherited from BaseForm
self.add_error('password1', error)
return password1

关于python - Django - 使用 AUTH_PASSWORD_VALIDATORS 验证密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52322148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com