使用内置Django auth模块时,如何设置最小密码长度?

Pau*_*ite 12 django django-authentication

我正在使用内置的auth模块在Django站点中实现身份验证,包括内置的UserCreationForm.

我想设置密码的最小长度.但是,我找不到任何关于如何执行此操作的文档.

我可以将auth模块的User模块配置为在数据库级别要求吗?或者我应该对其进行子类化UserCreationForm(我实际上已经因为无关的原因而这样做了)并添加一个额外的验证器来强制执行密码长度?

And*_*res 25

我认为实现这一目标的最简单方法是使用Django密码验证

最小长度足以将其添加到设置文件中:

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
        'OPTIONS': {
            'min_length': 8,
        }
    },
]
Run Code Online (Sandbox Code Playgroud)

还有其他验证器,如NumericPasswordValidatorCommonPasswordValidator

  • 这是更好的答案!如果内置了password_validation机制,请不要摆弄干净的方法! (2认同)

Chr*_*att 8

特别是如果你已经使用了一个分类UserCreationForm,我会说你应该只是添加验证.您应该能够覆盖clean_password表单上的方法:

def clean_password(self):
    password = self.cleaned_data.get('password1')
    if len(password) < 8:
        raise ValidationError('Password too short')
    return super(MyUserCreationForm, self).clean_password1()
Run Code Online (Sandbox Code Playgroud)


Ala*_*air 5

对用户创建表单进行子类化听起来是一种很好的方法.您无法在数据库级别强制执行它,因为Django只存储密码的哈希值.