Я реализую аутентификацию на сайте Django, используя встроенный модуль auth, включая встроенный UserCreationForm
.
Я хотел бы установить минимальную длину для паролей. Однако я не могу найти никакой документации о том, как это сделать.
Могу ли я настроить модуль User
модуля auth так, чтобы он требовал этого на уровне базы данных? Или мне следует создать подкласс UserCreationForm
(на самом деле я уже делаю это по несвязанным причинам) и добавить дополнительный валидатор, который будет требовать длину пароля?
Некоторая информация об ответах,
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})