Django поставляется с системой аутентификации пользователей. Она обеспечивает пользовательские аккаунты, группы, права и сессии на основе куки. Этот раздел документации объясняет как работает стандартная реализация и как можно расширить и настроить её под нужды своего проекта.
Система аутентификации Django отвечает за оба аспекта: аутентификацию и авторизацию. Если коротко, то аутентификация проверяет пользователя, а авторизация определяет, что аутентифицированный пользователь может делать. Далее термин “аутентификация” будет использоваться для обозначения обоих аспектов.
Система аутентификации состоит из:
Пользователей
Прав: Бинарные (да/нет) флаги, определяющие наличие у пользователя права выполнять определённые действия.
Групп: Общий способ назначения меток и прав на множество пользователей.
Настраиваемой системы хеширования паролей
Инструментов для форм и представлений для аутентификации пользователей или для ограничения доступа к контенту
Системы плагинов
Аутентификационная система Django старается быть очень простой и не предоставляет некоторые фичи, распространённые в других системах веб аутентификации. Такие фичи реализованы в сторонних пакетах:
Проверка сложности пароля
Ограничение попыток входа
Аутентификация через сторонние сервисы (OAuth, например)
Поддержка аутентификации скомпонована в виде модуля в django.contrib.auth. По умолчанию, требуемые настройки уже включены в settings.py, создаваемый с помощью команды django-admin startproject, и представляют собой две записи в параметре конфигурации INSTALLED_APPS:
'django.contrib.auth' содержит ядро системы аутентификации и её стандартные модели.
'django.contrib.contenttypes' является фреймворком типов, который позволяет правам быть назначенными на создаваемые вами модели.
и записи в параметре конфигурации MIDDLEWARE_CLASSES:
SessionMiddleware управляет сессиями во время запросов.
AuthenticationMiddleware ассоциирует пользователей с запросами с помощью сессий.
SessionAuthenticationMiddleware разлогинит пользователя из всех его сессий, если он поменяет пароль.
При наличии этих настроек, применение команды manage.py migrate создаёт в базе данных необходимые для системы аутентификации таблицы, создаёт права для любых моделей всех зарегистрированных приложений.
Mar 31, 2016