Аутентификация пользователей в Django¶
Django поставляется с системой аутентификации пользователей. Она обрабатывает учетные записи пользователей, группы, разрешения и пользовательские сессии на основе cookie. В этом разделе документации объясняется, как работает стандартная реализация из коробки, а также как изменить extend and customize ее в соответствии с потребностями вашего проекта.
Быстрый обзор¶
Система аутентификации Django обрабатывает как аутентификацию, так и авторизацию. Вкратце, аутентификация проверяет, является ли пользователь тем, за кого себя выдает, а авторизация определяет, что разрешено делать аутентифицированному пользователю. Здесь термин аутентификация используется для обозначения обеих задач.
Система авторизации состоит из:
- Пользователи
- Разрешения: Бинарные (да/нет) флаги, обозначающие, может ли пользователь выполнять определенную задачу.
- Группы: Общий способ применения меток и разрешений к нескольким пользователям.
- Настраиваемая система хеширования паролей
- Формы и инструменты просмотра для регистрации пользователей или ограничения контента
- Подключаемая бэкэнд-система
Система аутентификации в Django стремится быть очень общей и не предоставляет некоторые возможности, обычно встречающиеся в веб-системах аутентификации. Решения некоторых из этих общих проблем были реализованы в пакетах сторонних разработчиков:
- Проверка надежности пароля
- Ограничение попыток входа в систему
- Аутентификация против третьих лиц (например, OAuth)
- Разрешения на уровне объекта
Установка¶
Поддержка аутентификации поставляется в виде модуля Django contrib в django.contrib.auth
. По умолчанию, необходимая конфигурация уже включена в settings.py
, сгенерированную django-admin startproject
, она состоит из двух элементов, перечисленных в настройках INSTALLED_APPS
:
'django.contrib.auth'
содержит ядро структуры аутентификации и ее модели по умолчанию.'django.contrib.contenttypes'
- это Django content type system, который позволяет ассоциировать разрешения с моделями, которые вы создаете.
и эти элементы в вашей настройке MIDDLEWARE
:
SessionMiddleware
управляет sessions всеми запросами.AuthenticationMiddleware
связывает пользователей с запросами с помощью сессий.
При наличии этих настроек, выполнение команды manage.py migrate
создает необходимые таблицы базы данных для моделей, связанных с auth, и разрешений для любых моделей, определенных в установленных приложениях.