Аутентификация пользователей в Django

Django поставляется с системой аутентификации пользователей. Она обеспечивает пользовательские аккаунты, группы, права и сессии на основе куки. Этот раздел документации объясняет как работает стандартная реализация и как можно расширить и настроить её под нужды своего проекта.

Введение

Система аутентификации Django отвечает за оба аспекта: аутентификацию и авторизацию. Если коротко, то аутентификация проверяет пользователя, а авторизация определяет, что аутентифицированный пользователь может делать. Далее термин “аутентификация” будет использоваться для обозначения обоих аспектов.

Система аутентификации состоит из:

  • Пользователей

  • Прав: Бинарные (да/нет) флаги, определяющие наличие у пользователя права выполнять определённые действия.

  • Групп: Общий способ назначения меток и прав на множество пользователей.

  • Настраиваемой системы хеширования паролей

  • Инструментов для форм и представлений для аутентификации пользователей или для ограничения доступа к контенту

  • Системы плагинов

Аутентификационная система Django старается быть очень простой и не предоставляет некоторые фичи, распространённые в других системах веб аутентификации. Такие фичи реализованы в сторонних пакетах:

  • Проверка сложности пароля

  • Ограничение попыток входа

  • Аутентификация через сторонние сервисы (OAuth, например)

Установка

Поддержка аутентификации скомпонована в виде модуля в django.contrib.auth. По умолчанию, требуемые настройки уже включены в settings.py, создаваемый с помощью команды django-admin startproject, и представляют собой две записи в параметре конфигурации INSTALLED_APPS:

  1. 'django.contrib.auth' содержит ядро системы аутентификации и её стандартные модели.

  2. 'django.contrib.contenttypes' является фреймворком типов, который позволяет правам быть назначенными на создаваемые вами модели.

и две записи в параметре конфигурации MIDDLEWARE_CLASSES:

  1. SessionMiddleware управляет сессиями во время запросов.

  2. AuthenticationMiddleware ассоциирует пользователей с запросами с помощью сессий.

При наличии этих настроек, применение команды manage.py migrate создаёт в базе данных необходимые для системы аутентификации таблицы, создаёт права для любых моделей всех зарегистрированных приложений.