Django密码验证器

时间:2018-10-23 09:19:47

标签: django change-password

Django 1.11.8

如何更改密码限制? 我通过以下示例编辑了setting.py:

AUTH_PASSWORD_VALIDATORS = [
{
    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
    'NAME': 'django.contrib.auth.form.password_validation.MinimumLengthValidator',
    'OPTIONS': {
        'min_length': 4,
    }
},
{
    'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
    'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},

]

但是警告消息没有改变(例如,总是8个字符)。更改长度选项是否足够? enter image description here

1 个答案:

答案 0 :(得分:0)

应该更改它。如果您检查MinimumLengthValidator的源代码。

class MinimumLengthValidator(object):
    """
    Validate whether the password is of a minimum length.
    """
    def __init__(self, min_length=8):
        self.min_length = min_length

    def validate(self, password, user=None):
        if len(password) < self.min_length:
            raise ValidationError(
                ungettext(
                    "This password is too short. It must contain at least %(min_length)d character.",
                    "This password is too short. It must contain at least %(min_length)d characters.",
                    self.min_length
                ),
                code='password_too_short',
                params={'min_length': self.min_length},
            )

    def get_help_text(self):
        return ungettext(
            "Your password must contain at least %(min_length)d character.",
            "Your password must contain at least %(min_length)d characters.",
            self.min_length
        ) % {'min_length': self.min_length}

也许重新加载服务器(或重新启动运行服务器)

如果未更改,则可以选择创建自己的验证器。 检查文档here