Spec-Zone.ru › Django 5.2

django.contrib.auth

В данном документе приводится справочная информация по API для компонентов системы аутентификации Django. Для получения более подробной информации об использовании этих компонентов или о том, как настроить аутентификацию и авторизацию, см. руководство по аутентификации.

User модель

class models.User

Поля

classmodels.User

User объекты имеют следующие поля:

username

Обязательное поле. Длина не более 150 символов. Имена пользователей могут содержать буквенно-цифровые символы, _, @, +, . и - символы.

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

first_name

Необязательное поле (blank=True). Длина не более 150 символов.

last_name

Необязательное поле (blank=True). Длина не более 150 символов.

email

Необязательное поле (blank=True). Электронный адрес.

password

Обязательное поле. Хэш пароля и метаданные о нём. (Django не хранит сам пароль.) Сырые пароли могут иметь произвольную длину и содержать любые символы. Метаданные в этом поле могут отмечать пароль как непригодный к использованию. См. документацию по паролям.

groups

Связь многие-ко-многим с Group

user_permissions

Связь многие-ко-многим с Permission

is_staff

Булево значение. Разрешает данному пользователю доступ к админской панели.

is_active

Булево значение. Отмечает учётную запись пользователя как активную. Рекомендуется устанавливать этот флаг в False вместо удаления аккаунтов. Таким образом, если в ваших приложениях есть внешние ключи к пользователям, внешние ключи не сломаются.

Это не обязательно контролирует возможность входа в систему. Модули аутентификации не обязаны проверять флаг is_active, но по умолчанию (ModelBackend) и RemoteUserBackend — проверяют. Вы можете использовать AllowAllUsersModelBackend или AllowAllUsersRemoteUserBackend, если хотите разрешить вход неактивным пользователям. В этом случае вам также потребуется настроить AuthenticationForm, используемый LoginView, поскольку он отклоняет неактивных пользователей. Имейте в виду, что методы проверки разрешений, такие как has_perm(), и аутентификация в Django admin возвращают False для неактивных пользователей.

is_superuser

Булево значение. Считает этого пользователя обладающим всеми правами без присвоения ему каких-либо конкретных разрешений.

last_login

Дата и время последнего входа пользователя.

date_joined

Дата и время создания учетной записи.

Атрибуты

classmodels.User
is_authenticated

Только для чтения атрибут, который всегда True (в отличие от AnonymousUser.is_authenticated, который всегда False). Это способ узнать, был ли пользователь аутентифицирован. Это не подразумевает никаких разрешений и не проверяет, активен ли пользователь или у него есть действительная сессия. Хотя обычно вы будете проверять этот атрибут на request.user, чтобы узнать, был ли он заполнен AuthenticationMiddleware (представляющий текущего вошедшего пользователя), вы должны знать, что этот атрибут является True для любого User экземпляра.

is_anonymous

Только для чтения атрибут, который всегда False. Это способ различать User и AnonymousUser объекты. Как правило, вы должны предпочесть использовать is_authenticated этому атрибуту.

Методы

classmodels.User
get_username()

Возвращает имя пользователя. Поскольку модель User может быть заменена, следует использовать этот метод вместо прямого обращения к атрибуту username.

get_full_name()

Возвращает first_name плюс last_name с пробелом между ними.

get_short_name()

Возвращает first_name.

set_password(raw_password)

Устанавливает пароль пользователя на заданную строку, обрабатывая хэширование пароля. Не сохраняет объект User.

Если значение raw_password равно None, пароль будет установлен на недопустимое значение, как если бы использовался set_unusable_password().

check_password(raw_password)
acheck_password(raw_password)

Асинхронная версия: acheck_password()

Возвращает True, если заданная строка — правильный пароль для пользователя. (Это обрабатывает хэширование пароля при сравнении.)

set_unusable_password()

Отмечает пользователя как не имеющего установленного пароля, обновляя метаданные в поле password. Это не то же самое, что пустая строка в качестве пароля. check_password() для этого пользователя никогда не вернёт True. Не сохраняет объект User.

Это может потребоваться, если аутентификация для вашего приложения происходит с помощью внешнего источника, например, каталога LDAP.

Ограничение сброса пароля

Пользователи с недопустимым паролем не смогут запросить письмо для сброса пароля через PasswordResetView.

has_usable_password()

Возвращает False, если для этого пользователя был вызван set_unusable_password().

get_user_permissions(obj=None)
aget_user_permissions(obj=None)

Асинхронная версия: aget_user_permissions()

Возвращает набор строк разрешений, имеющихся у пользователя напрямую.

Если obj передано, возвращает только разрешения пользователя для этого конкретного объекта.

Изменено в Django 5.2:

aget_user_permissions() метод был добавлен.

get_group_permissions(obj=None)
aget_group_permissions(obj=None)

Асинхронная версия: aget_group_permissions()

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

Если obj передано, возвращает только разрешения группы для этого конкретного объекта.

Изменено в Django 5.2:

aget_group_permissions() метод был добавлен.

get_all_permissions(obj=None)
aget_all_permissions(obj=None)

Асинхронная версия: aget_all_permissions()

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

Если obj передано, возвращает только разрешения для этого конкретного объекта.

Изменено в Django 5.2:

aget_all_permissions() метод был добавлен.

has_perm(perm, obj=None)
ahas_perm(perm, obj=None)

Асинхронная версия: ahas_perm()

Возвращает True, если у пользователя есть указанное разрешение, где perm в формате "<app label>.<permission codename>". (см. документацию по разрешениям). Если пользователь неактивен, этот метод всегда возвращает False. Для активного суперпользователя этот метод всегда возвращает True.

Если obj передано, этот метод не будет проверять разрешение для модели, а для этого конкретного объекта.

Изменено в Django 5.2:

ahas_perm() метод был добавлен.

has_perms(perm_list, obj=None)
ahas_perms(perm_list, obj=None)

Асинхронная версия: ahas_perms()

Возвращает True, если у пользователя есть каждое из указанных разрешений, где каждое perm в формате "<app label>.<permission codename>". Если пользователь неактивен, этот метод всегда возвращает False. Для активного суперпользователя этот метод всегда возвращает True.

Если obj передано, этот метод не будет проверять разрешения для модели, а для этого конкретного объекта.

Изменено в Django 5.2:

ahas_perms() метод был добавлен.

has_module_perms(package_name)
ahas_module_perms(package_name)

Асинхронная версия: ahas_module_perms()

Возвращает True, если у пользователя есть какие-либо разрешения в заданном пакете (идентификаторе Django приложения). Если пользователь неактивен, этот метод всегда возвращает False. Для активного суперпользователя этот метод всегда возвращает True.

Изменено в Django 5.2:

ahas_module_perms() метод был добавлен.

email_user(subject, message, from_email=None, **kwargs)

Отправляет электронное письмо пользователю. Если from_email равно None, Django использует DEFAULT_FROM_EMAIL. Любые **kwargs передаются в вызов send_mail().

Методы менеджера

class models.UserManager

Модель User имеет настраиваемого менеджера, который имеет следующие вспомогательные методы (в дополнение к методам, предоставляемым BaseUserManager):

create_user(username, email=None, password=None, **extra_fields)
acreate_user(username, email=None, password=None, **extra_fields)

Асинхронная версия: acreate_user()

Создаёт, сохраняет и возвращает User.

Значения username и password устанавливаются, как задано. Часть домена email автоматически преобразуется в нижний регистр, и возвращённый объект User будет иметь is_active, установленным в True.

Если пароль не предоставлен, вызывается set_unusable_password().

Если электронная почта не предоставлена, email будет установлена в пустую строку.

Ключевые аргументы extra_fields передаются в метод __init__ объекта User, чтобы разрешить установку произвольных полей в модели пользовательского профиля пользовательской модели.

Пример использования см. в создании пользователей.

Изменено в Django 5.2:

был добавлен метод acreate_user().

create_superuser(username, email=None, password=None, **extra_fields)
acreate_superuser(username, email=None, password=None, **extra_fields)

Асинхронная версия: acreate_superuser()

Аналогично create_user(), но устанавливает is_staff и is_superuser в значение True.

Изменено в Django 5.2:

был добавлен метод acreate_superuser().

with_perm(perm, is_active=True, include_superusers=True, backend=None, obj=None)

Возвращает пользователей, у которых есть указанное разрешение perm в формате "<app label>.<permission codename>" или в виде экземпляра Permission. Возвращает пустой набор запросов, если не найдены пользователи с указанным perm.

Если is_active равно True (по умолчанию), возвращает только активных пользователей; если False, возвращает только неактивных пользователей. Используйте None, чтобы вернуть всех пользователей независимо от состояния активности.

Если include_superusers равно True (по умолчанию), результат будет включать суперпользователей.

Если backend передано и определено в AUTHENTICATION_BACKENDS, этот метод будет его использовать. В противном случае он будет использовать значение backend в AUTHENTICATION_BACKENDS, если оно единственное, или вызовет исключение.

AnonymousUser объект

class models.AnonymousUser

django.contrib.auth.models.AnonymousUser — класс, реализующий интерфейс django.contrib.auth.models.User со следующими отличиями:

  • id всегда None.
  • username всегда пустая строка.
  • get_username() всегда возвращает пустую строку.
  • is_anonymous равно True, а не False.
  • is_authenticated равно False, а не True.
  • is_staff и is_superuser всегда False.
  • is_active всегда False.
  • groups и user_permissions всегда пустые.
  • set_password(), check_password(), save() и delete() вызывают исключение NotImplementedError.

На практике вам, вероятно, не придётся использовать объекты AnonymousUser самостоятельно, но они используются веб-запросами, как описано в следующей секции.

Permission модель

class models.Permission

Поля

Permission объекты имеют следующие поля:

classmodels.Permission
name

Обязательное. Не более 255 символов. Пример: 'Can vote'.

content_type

Обязательное. Внешний ключ к модели ContentType.

codename

Обязательное. Не более 100 символов. Пример: 'can_vote'.

Методы

Permission объекты имеют стандартные методы доступа к данным, как и любая другая Django модель.

Group модель

class models.Group

Поля

Group имеют следующие поля:

classmodels.Group
name

Обязательно. 150 символов или меньше. Допускаются любые символы. Пример: 'Awesome Users'.

permissions

Множественное поле для Permission:

group.permissions.set([permission_list])
group.permissions.add(permission, permission, ...)
group.permissions.remove(permission, permission, ...)
group.permissions.clear()

Проверяющие правила

class validators.ASCIIUsernameValidator

Проверяющее правило поля, допускающее только ASCII буквы и цифры, в дополнение к @, ., +, - и _.

class validators.UnicodeUsernameValidator

Проверяющее правило поля, допускающее Unicode символы, в дополнение к @, ., +, - и _. Проверяющее правило по умолчанию для User.username.

Сигналы входа и выхода

Система аутентификации использует следующие сигналы, которые могут быть использованы для уведомления при входе или выходе пользователя.

user_logged_in

Отправляется при успешном входе пользователя.

Аргументы, отправляемые с этим сигналом:

sender

Класс пользователя, который только что вошел.

request

Текущий экземпляр HttpRequest.

user

Экземпляр пользователя, который только что вошел.

user_logged_out

Отправляется при вызове метода выхода.

sender

Как выше: класс пользователя, который только что вышел или None, если пользователь не был аутентифицирован.

request

Текущий экземпляр HttpRequest.

user

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

user_login_failed

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

sender

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

credentials

Словарь ключевых аргументов, содержащий учетные данные пользователя, которые были переданы в authenticate() или в ваш собственный пользовательский модуль аутентификации. Учетные данные, соответствующие набору шаблонов «чувствительных» данных (включая пароль), не будут отправляться открытым текстом в качестве части сигнала.

request

Объект HttpRequest, если он был предоставлен authenticate().

Модули аутентификации

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

Доступные модули аутентификации

Следующие модули доступны в django.contrib.auth.backends:

class BaseBackend [source]

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

get_user_permissions(user_obj, obj=None) [source]
aget_user_permissions(user_obj, obj=None)

Асинхронная версия: aget_user_permissions()

Возвращает пустой набор.

Изменено в Django 5.2:

aget_user_permissions() функция была добавлена.

get_group_permissions(user_obj, obj=None) [source]
aget_group_permissions(user_obj, obj=None)

Асинхронная версия: aget_group_permissions()

Возвращает пустой набор.

Изменено в Django 5.2:

aget_group_permissions() функция была добавлена.

get_all_permissions(user_obj, obj=None) [source]
aget_all_permissions(user_obj, obj=None)

Асинхронная версия: aget_all_permissions()

Использует get_user_permissions() и get_group_permissions() для получения набора строк разрешений, которые имеет user_obj.

Изменено в Django 5.2:

aget_all_permissions() функция была добавлена.

has_perm(user_obj, perm, obj=None) [source]
ahas_perm(user_obj, perm, obj=None)

Асинхронная версия: ahas_perm()

Использует get_all_permissions() для проверки, имеет ли user_obj строку разрешения perm.

Изменено в Django 5.2:

ahas_perm() функция была добавлена.

class ModelBackend [source]

Это по умолчанию модуль аутентификации Django. Он выполняет аутентификацию, используя учетные данные, состоящие из идентификатора пользователя и пароля. Для стандартной модели пользователей Django идентификатор пользователя — это имя пользователя, а для пользовательских моделей — это поле, указанное в USERNAME_FIELD (см. Настройка пользователей и аутентификации).

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

has_perm(), get_all_permissions(), get_user_permissions() и get_group_permissions() позволяют передавать объект в качестве параметра для разрешений, специфичных для объекта, но этот модуль не реализует их, кроме возвращения пустого набора разрешений, если obj is not None.

with_perm() также позволяет передавать объект в качестве параметра, но, в отличие от других методов, возвращает пустой набор результатов, если obj is not None.

authenticate(request, username=None, password=None, **kwargs) [source]
aauthenticate(request, username=None, password=None, **kwargs)

Асинхронная версия: aauthenticate()

Пытается аутентифицировать username с password, вызывая User.check_password. Если username не предоставлен, он пытается получить имя пользователя из kwargs, используя ключ CustomUser.USERNAME_FIELD. Возвращает аутентифицированного пользователя или None.

request — HttpRequest и может быть None, если он не был передан в authenticate() (который передает его в модуль).

Изменено в Django 5.2:

aauthenticate() функция была добавлена.

get_user_permissions(user_obj, obj=None) [source]
aget_user_permissions(user_obj, obj=None)

Асинхронная версия: aget_user_permissions()

Возвращает набор строк разрешений, которые имеет user_obj по своим пользовательским разрешениям. Возвращает пустой набор, если is_anonymous или is_active равно False.

Изменено в Django 5.2:

aget_user_permissions() функция была добавлена.

get_group_permissions(user_obj, obj=None) [source]
aget_group_permissions(user_obj, obj=None)

Асинхронная версия: aget_group_permissions()

Возвращает набор строк разрешений, которые имеет user_obj по разрешениям групп, к которым он принадлежит. Возвращает пустой набор, если is_anonymous или is_active равно False.

Изменено в Django 5.2:

aget_group_permissions() функция была добавлена.

get_all_permissions(user_obj, obj=None) [source]
aget_all_permissions(user_obj, obj=None)

Асинхронная версия: aget_all_permissions()

Возвращает набор строк разрешений, которые имеет user_obj, включая разрешения пользователя и разрешения группы. Возвращает пустой набор, если is_anonymous или is_active равно False.

Изменено в Django 5.2:

aget_all_permissions() функция была добавлена.

has_perm(user_obj, perm, obj=None) [source]
ahas_perm(user_obj, perm, obj=None)

Асинхронная версия: ahas_perm()

Использует get_all_permissions() для проверки наличия у user_obj разрешения perm. Возвращает False, если пользователь не is_active.

Изменено в Django 5.2:

ahas_perm() функция была добавлена.

has_module_perms(user_obj, app_label) [source]
ahas_module_perms(user_obj, app_label)

Асинхронная версия: ahas_module_perms()

Возвращает, имеет ли user_obj какие-либо разрешения на приложение app_label.

Изменено в Django 5.2:

ahas_module_perms() функция была добавлена.

user_can_authenticate() [source]

Возвращает, разрешено ли пользователю аутентифицироваться. Чтобы соответствовать поведению AuthenticationForm, который prohibits inactive users from logging in, этот метод возвращает False для пользователей с is_active=False. Пользовательские модели пользователей, у которых нет поля is_active, разрешены.

with_perm(perm, is_active=True, include_superusers=True, obj=None) [source]

Возвращает всех активных пользователей, у которых есть разрешение perm в виде "<app label>.<permission codename>" или объекта Permission. Возвращает пустой набор результатов, если пользователи с указанным perm не найдены.

Если is_active равно True (по умолчанию), возвращаются только активные пользователи, или если равно False, возвращаются только неактивные пользователи. Используйте None, чтобы вернуть всех пользователей независимо от их активного состояния.

Если include_superusers равно True (по умолчанию), результат будет включать суперпользователей.

class AllowAllUsersModelBackend [source]

Аналогично ModelBackend, за исключением того, что не отклоняет неактивных пользователей, поскольку user_can_authenticate() всегда возвращает True.

При использовании этого бэкенда, вероятно, потребуется настроить AuthenticationForm, используемый LoginView, переопределив метод confirm_login_allowed(), так как он отклоняет неактивных пользователей.

class RemoteUserBackend [source]

Используйте этот бэкенд для работы с аутентификацией, обрабатываемой вне Django. Он выполняет аутентификацию с использованием имен пользователей, переданных в request.META['REMOTE_USER']. См. документацию по аутентификации по REMOTE_USER.

Если вам требуется больший контроль, вы можете создать свой собственный бэкенд аутентификации, унаследовав от этого класса и переопределив эти атрибуты или методы:

create_unknown_user

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

authenticate(request, remote_user) [source]
aauthenticate(request, remote_user)

Асинхронная версия: aauthenticate()

Переданное имя пользователя как remote_user считается надёжным. Этот метод возвращает объект пользователя с заданным именем пользователя, создавая новый объект пользователя, если create_unknown_user равно True.

Возвращает None, если create_unknown_user равно False и объект пользователя с заданным именем пользователя не найден в базе данных.

request — объект HttpRequest и может быть None, если он не был передан в authenticate() (который передаёт его бэкенду).

Изменено в Django 5.2:

aauthenticate() функция была добавлена.

clean_username(username) [source]

Выполняет любые очистные операции с именем пользователя (например, удаление информации DN LDAP) перед использованием его для получения или создания объекта пользователя. Возвращает очищенное имя пользователя.

configure_user(request, user, created=True) [source]
aconfigure_user(request, user, created=True)

Асинхронная версия: aconfigure_user()

Настраивает пользователя при каждой попытке аутентификации. Этот метод вызывается сразу после получения или создания аутентифицируемого пользователя и может быть использован для выполнения пользовательских действий настройки, таких как установка групп пользователя на основе атрибутов в каталоге LDAP. Возвращает объект пользователя. При вызове получения или создания пользователя из синхронного контекста, вызывается configure_user, aconfigure_user вызывается из асинхронных контекстов.

Настройка может быть выполнена либо один раз при создании пользователя (created равно True), либо для существующих пользователей (created равно False) в качестве способа синхронизации атрибутов между удалённой и локальной системами.

request — объект HttpRequest и может быть None, если он не был передан в authenticate() (который передаёт его бэкенду).

Изменено в Django 5.2:

aconfigure_user() функция была добавлена.

user_can_authenticate()

Возвращает, разрешено ли пользователю пройти аутентификацию. Этот метод возвращает False для пользователей с is_active=False. Пользователи с пользовательскими моделями, не имеющими поля is_active, допускаются.

class AllowAllUsersRemoteUserBackend [source]

Аналогично RemoteUserBackend, за исключением того, что не отклоняет неактивных пользователей, поскольку user_can_authenticate всегда возвращает True.

Функции утилиты

get_user(request) [source]
aget_user(request)

Асинхронная версия: aget_user()

Возвращает экземпляр модели пользователя, связанный с сессией данного request.

Проверяет, присутствует ли аутентификационный бэкэнд, сохранённый в сессии, в AUTHENTICATION_BACKENDS. Если да, использует метод бэкэнда get_user() для получения экземпляра модели пользователя, а затем проверяет сессию, вызывая метод модели пользователя get_session_auth_hash(). Если проверка не пройдена, и заданы SECRET_KEY_FALLBACKS, проверяет сессию с каждым резервным ключом, используя get_session_auth_fallback_hash().

Возвращает экземпляр AnonymousUser, если аутентификационный бэкэнд, сохранённый в сессии, больше не присутствует в AUTHENTICATION_BACKENDS, если метод бэкэнда get_user() не возвращает пользователя, или если хэш аутентификации сессии не проходит проверку.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/5.2/ref/contrib/auth/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API