gpt4 book ai didi

python - Django - 在 ModelForm 中添加密码验证

转载 作者:太空狗 更新时间:2023-10-30 00:05:00 26 4
gpt4 key购买 nike

我在 Django 中制作了一个 ModelForm 用于注册新用户。它有 4 个字段(usernameemailpasswordconfirm_password)。我想为 password 字段添加一些验证。例如,如果密码少于 8 个字符或密码与用户名相似,则引发错误消息。我该怎么做?

这是我的 forms.py 文件:

from django.contrib.auth.models import User
from django import forms

class user_form(forms.ModelForm):
password = forms.CharField(widget = forms.PasswordInput)
confirm_password = forms.CharField(widget = forms.PasswordInput)

class Meta:
model = User
fields = ['username','email', 'password','confirm_password']

我的 settings.py 已经包含以下验证器:

AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimila‌​rityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValida‌​tor',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValid‌​ator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordVali‌​dator',
}
]

它已经在 settings.py 中,但是我的表单密码没有被验证。

最佳答案

您需要阅读有关 Password Validation 的 Django 文档.

总而言之,您需要更新 settings.py 中的 AUTH_PASSWORD_VALIDATORS 设置。

Django 带有一些内置的密码验证器:

  1. UserAttributeSimilarityValidator(检查密码与一组用户属性之间的相似性)
  2. MinimumLengthValidator(检查密码是否满足最小长度)
  3. CommonPasswordValidator(检查密码是否出现在常用密码列表中)
  4. NumericPasswordValidator(检查密码是否不完全是数字)

根据您在问题中陈述的示例验证,您需要使用 MinimumLengthValidatorUserAttributeSimilarityValidator

由于您使用的是表单,因此需要手动触发密码验证,如 Django docs 中所述) 通过在验证表单时调用 django.contrib.auth.password_validation.validate_password

关于python - Django - 在 ModelForm 中添加密码验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47838632/

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