Как я могу установить минимальную длину пароля при использовании встроенного модуля Django auth?

Я реализую аутентификацию на сайте Django, используя встроенный модуль auth, включая встроенный UserCreationForm.

Я хотел бы установить минимальную длину для паролей. Однако я не могу найти никакой документации о том, как это сделать.

Могу ли я настроить модуль User модуля auth так, чтобы он требовал этого на уровне базы данных? Или мне следует создать подкласс UserCreationForm (на самом деле я уже делаю это по несвязанным причинам) и добавить дополнительный валидатор, который будет требовать длину пароля?

12
задан Paul D. Waite 28 February 2012 в 19:03
поделиться

1 ответ

Некоторая информация об ответах,

django.contrib.auth.password_validation.MinimumLengthValidator

была недавно реализована от django 1.9 + для более старой версии это работа привычки,

, таким образом, можно пойти с собственным блоком проверки допустимости,

from django.core.exceptions import ValidationError
from django.utils.translation import ugettext

def validate(min_length, password):
    special_characters = "[~\!@#\$%\^&\*\(\)_\+{}\":;'\[\]]"
    if len(password) < 8:
        raise ValidationError(ugettext('Password length must be greater than 8 character.'))
    if not any(char.isdigit() for char in password):
        raise ValidationError(ugettext('Password must contain at least %(min_length)d digit.') % {'min_length': min_length})
    if not any(char.isalpha() for char in password):
        raise ValidationError(ugettext('Password must contain at least %(min_length)d letter.') % {'min_length': min_length})
    if not any(char in special_characters for char in password):
        raise ValidationError(ugettext('Password must contain at least %(min_length)d special character.') % {'min_length': min_length})
0
ответ дан 2 December 2019 в 03:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: