Рубрики
Без рубрики

Как Django подтверждает пароли?

Django по умолчанию проверка пароля на пользовательской модели с помощью команд CreateSuperuser и ChangePassword. Помечено Python, Django, Tutorial, Beginters.

Этот блог был впервые опубликован в Мой блог Анкет

Несколько дней назад я работал над одним из моих старых проектов Django. Он запустил старую версию Джанго, и я хотел, чтобы она была обновлена с последними изменениями фреймворка.

Итак, чтобы проверить сайт администратора Я попытался создать суперпользователь после подключения к локальной базе данных.

python manage.py createsuperuser

Когда я прошел пароль, похожий на имя пользователя, оно не удалось сказать, Пароль слишком похож на имя пользователя.

Эта ошибка заставила меня проверить работу по этой функции проверки пароля.

Первое, что я посмотрел, это Manage.py Сам файл, который, в свою очередь, импортировал и выполнял метод, называемый, execute_from_command_line .

Я отследил его обратно и нашел упаковку Команды содержащий все, что я хотел знать. В этом каталоге было два файла.

1. createsuperuser.py
2. changepassword.py

Команда изменений

Поскольку я никогда не использовал/не слышал о changePassword Команда, я подумал о том, чтобы попробовать это первым, и, к моему большому удовольствию, это сработало. Вы должны передать имя пользователя в качестве первого аргумента.

python manage.py changepassword username

Иногда вы находите золото, когда читаете код, верно? 😍

Теперь вернемся к бизнесу и посмотрим в CreateSuperuser командный класс более подробно.

Извлечение правильной базы данных

Если вы используете Django в течение некоторого времени, вы бы знали, что Джанго позволяет вам изменить много вещей в зависимости от определяющих настройки.

Это также включает в себя использование некоторой случайной модели в качестве базовой модели пользователя. Это первое, что создание суперпользователя __init__ Метод конструктора проверяет на.

Создание суперпользователя без взаимодействия

Вы можете использовать версию команды, которая позволяет создавать суперпользователь без какого -либо взаимодействия.

python manage.py createsuperuser --username ranvir --email abc@abc.com --no-input

Хотя пользователь, созданный с помощью этого процесса, не будет иметь пароля. Мы можем создать пароль, используя changePassword команда или панель администратора.

Требуемые поля и интерактивный режим

По умолчанию Пользователь модель, Электронная почта это единственное требуемое поле, но вы можете изменить это, изменив свое Обязательный_филд Настройка также.

В интерактивном режиме (который также является режимом по умолчанию) первое, что подсказка просит вас заполнить, это имя пользователя.

Джанго пытается умно предложить текущее имя пользователя системы в качестве имени пользователя по умолчанию. (Просто вау)

Это не будет предлагать систему имени пользователя, если оно уже взято. (Это ИИ для меня 😂)

После имени пользователя вы должны заполнить необходимое поле, которое является поле электронной почты для пользовательской модели по умолчанию.

Наконец, вы должны заполнить поле пароля.

Метод проверки пароля

Извините, что заставил вас ждать так долго, прежде чем прыгнуть на реальную причину за постом.

ValidatePassword это функция, которая используется для проверки пароля, предоставленного пользователем.

Опять же, мы также можем настроить все эти валидаторы, если эти различные проверки пароля не работают для вас, перейдите и удалите классы из файла настроек.

Это валидаторы по умолчанию.

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

Если мы используем валидаторы по умолчанию, то пароль,

  1. Не должен быть похож на имя пользователя , First_name , last_name и Электронная почта Анкет Он также проверяет сходство, используя SequenceMatcher Анкет Это должно быть менее 0,7 аналогично, что вы можете настроить. (Сказал вам, это ИИ)
  2. Должно быть больше 8 символов.
  3. Не должно быть в списке общих паролей. Список общих паролей находится в файле, Common-Passwords.txt.gz Анкет Он содержит список из примерно 20000 общих паролей, которые вы не должны использовать.
  4. Не должен содержать все числовые символы.

Я бы предложил сохранить базовую конфигурацию нетронутой для обработки паролей. Вы также можете использовать свои собственные проверки.

Итак, это все на этот раз. До следующего раза.

Оригинал: “https://dev.to/singh1114/how-does-django-validate-passwords-339o”