django.contrib.auth
В данном документе содержится справочная информация по API для компонентов системы аутентификации Django. Для получения более подробной информации об использовании этих компонентов или о том, как настроить аутентификацию и авторизацию, обратитесь к руководству по аутентификации.
Пользователь
Поля
-
class models.User -
Userобъекты имеют следующие поля:-
username -
Обязательное поле. Не более 30 символов. Имена пользователей могут содержать алфавитно-цифровые,
_,@,+,.и-символы.
-
first_name -
Необязательное поле. Не более 30 символов.
-
last_name -
Необязательное поле. Не более 30 символов.
-
email -
Необязательное поле. Адрес электронной почты.
-
password -
Обязательное поле. Хеш пароля и метаданные о нём. (Django не хранит исходный пароль.) Исходные пароли могут быть произвольной длины и содержать любые символы. См. документацию по паролям.
-
groups -
Связь «многие ко многим» с
Group
-
user_permissions -
Связь «многие ко многим» с
Permission
-
is_staff -
Булево значение. Определяет, может ли этот пользователь получить доступ к админской панели.
-
is_active -
Булево значение. Определяет, активен ли данный пользовательский аккаунт. Рекомендуется устанавливать это значение в
False, а не удалять аккаунты; таким образом, при наличии у ваших приложений внешних ключей к пользователям, внешние ключи не сломаются.Это не обязательно управляет возможностью пользователя войти в систему. Модули аутентификации не обязаны проверять флаг
is_active, и стандартные модули не делают этого. Если вы хотите отклонять вход на основе того, чтоis_activeимеет значениеFalse, вы должны проверить это в собственном представлении входа или в пользовательском модуле аутентификации. Однако,AuthenticationForm, используемый представлениемlogin()(по умолчанию), проверяет это условие, как и методы проверки разрешений, такие какhas_perm(), и аутентификация в админской панели Django. Все эти функции/методы вернутFalseдля неактивных пользователей.
-
is_superuser -
Булево значение. Указывает, что этот пользователь имеет все разрешения без явного их назначения.
-
last_login -
Дата и время последнего входа пользователя.
Это поле будет
nullесли пользователь никогда не входил в систему. Ранее оно по умолчанию устанавливалось на текущую дату/время.
-
date_joined -
Дата и время создания учетной записи. По умолчанию устанавливается на текущую дату/время при создании учетной записи.
-
Методы
-
class models.User -
-
get_username() -
Возвращает имя пользователя. Поскольку модель User может быть заменена, следует использовать этот метод вместо прямой ссылки на атрибут username.
-
is_anonymous() -
Всегда возвращает
False. Это способ различения объектовUserиAnonymousUser. В целом, следует предпочитать использование методаis_authenticated().
-
is_authenticated() -
Всегда возвращает
True(в отличие отAnonymousUser.is_authenticated(), который всегда возвращаетFalse). Это способ определить, был ли пользователь аутентифицирован. Это не подразумевает никаких разрешений и не проверяет, активен ли пользователь или у него есть действительная сессия. Хотя обычно вы вызываете этот метод дляrequest.user, чтобы узнать, был ли он заполнен middlewareAuthenticationMiddleware(представляющим текущего вошедшего в систему пользователя), следует знать, что этот метод возвращаетTrueдля любого экземпляраUser.
-
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) -
Возвращает
True, если заданная строка является правильным паролем для пользователя (это заботится о хэшировании пароля при сравнении).
-
set_unusable_password() -
Помечает пользователя как не имеющего установленного пароля. Это не то же самое, что иметь пустую строку для пароля.
check_password()для этого пользователя никогда не вернётTrue. Не сохраняет объектUser.Вам может потребоваться это, если аутентификация для вашего приложения происходит по отношению к существующему внешнему источнику, такому как каталог LDAP.
-
has_usable_password() -
Возвращает
Falseесли был вызван методset_unusable_password()для этого пользователя.
-
get_group_permissions(obj=None) -
Возвращает множество строк разрешений, которыми пользователь обладает через свои группы.
Если
objпередаётся в качестве аргумента, возвращает только разрешения группы для данного объекта.
-
get_all_permissions(obj=None) -
Возвращает множество строк разрешений, которыми пользователь обладает как через разрешения группы, так и через разрешения пользователя.
Если
objпередаётся в качестве аргумента, возвращает только разрешения для этого конкретного объекта.
-
has_perm(perm, obj=None) -
Возвращает
True, если пользователь обладает указанным разрешением, где perm имеет формат"<app label>.<permission codename>". (см. документацию по разрешениям). Если пользователь неактивен, этот метод всегда возвращаетFalse.Если
objпередаётся в качестве аргумента, этот метод не будет проверять разрешение для модели, а для данного объекта.
-
has_perms(perm_list, obj=None) -
Возвращает
True, если пользователь обладает каждым из указанных разрешений, где каждое perm имеет формат"<app label>.<permission codename>". Если пользователь неактивен, этот метод всегда возвращаетFalse.Если
objпередаётся в качестве аргумента, этот метод не будет проверять разрешения для модели, а для данного объекта.
-
has_module_perms(package_name) -
Возвращает
True, если пользователь обладает какими-либо разрешениями в указанном пакете (метке приложения Django). Если пользователь неактивен, этот метод всегда возвращаетFalse.
-
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) -
Создаёт, сохраняет и возвращает объект
User.Имя пользователя
usernameи парольpasswordустанавливаются как заданные. Часть домена в полеemailавтоматически преобразуется в нижний регистр, а возвращённый объектUserбудет иметь полеis_activeустановленным вTrue.Если пароль не указан, будет вызван метод
set_unusable_password().Ключевые аргументы
extra_fieldsпередаются в метод__init__объектаUserдля возможности установки произвольных полей в модели пользователя.Пример использования см. в разделе Создание пользователей.
-
create_superuser(username, email, password, **extra_fields) -
То же, что и
create_user(), но устанавливает значенияis_staffиis_superuserвTrue.
-
Пользователи без имени
-
class models.AnonymousUser -
django.contrib.auth.models.AnonymousUser— это класс, реализующий интерфейсdjango.contrib.auth.models.User, с такими отличиями:-
id всегда
None. -
usernameвсегда пустая строка. -
get_username()всегда возвращает пустую строку. -
is_staffиis_superuserвсегдаFalse. -
is_activeвсегдаFalse. -
groupsиuser_permissionsвсегда пустые. -
is_anonymous()возвращаетTrueвместоFalse. -
is_authenticated()возвращаетFalseвместоTrue. -
set_password(),check_password(),save()иdelete()вызываютNotImplementedError.
AnonymousUser.get_username()был добавлен, чтобы лучше отразитьdjango.contrib.auth.models.User. -
id всегда
На практике вам, вероятно, не придётся использовать объекты AnonymousUser самостоятельно, но они используются веб-запросами, как объяснено в следующем разделе.
Разрешения
-
class models.Permission
Поля
Permission объекты имеют следующие поля:
-
class models.Permission -
-
name -
Обязательное. Не более 255 символов. Пример:
'Can vote'.Предел символов
max_lengthувеличен с 50 до 255.
-
content_type -
Обязательное. Ссылка на таблицу базы данных
django_content_type, содержащую запись для каждой установленной модели.
-
codename -
Обязательное. Не более 100 символов. Пример:
'can_vote'.
-
Методы
Permission объекты имеют стандартные методы доступа к данным, как и любая другая модель Django.
Группа
-
class models.Group
Поля
Group объекты имеют следующие поля:
-
class models.Group -
-
name -
Обязательное. Не более 80 символов. Допускаются любые символы. Пример:
'Awesome Users'.
-
permissions -
Множественное поле для
Permission:group.permissions = [permission_list] group.permissions.add(permission, permission, ...) group.permissions.remove(permission, permission, ...) group.permissions.clear()
-
Сигналы входа и выхода
Фреймворк авторизации использует следующие сигналы, которые могут использоваться для уведомления при входе или выходе пользователя.
-
user_logged_in() -
Отправляется, когда пользователь успешно вошёл.
Аргументы, отправляемые с этим сигналом:
-
sender - Класс пользователя, который только что вошёл.
-
request - Текущий экземпляр
HttpRequest. -
user - Экземпляр пользователя, который только что вошёл.
-
-
user_logged_out() -
Отправляется, когда вызывается метод выхода.
-
sender - Как выше: класс пользователя, который только что вышел, или
Noneесли пользователь не был авторизован. -
request - Текущий экземпляр
HttpRequest. -
user - Экземпляр пользователя, который только что вышел, или
Noneесли пользователь не был авторизован.
-
-
user_login_failed() -
Отправляется, когда пользователь не смог войти успешно.
-
sender - Имя модуля, используемого для аутентификации.
-
credentials - Словарь ключевых аргументов, содержащий учетные данные пользователя, которые были переданы в
authenticate()или в ваш собственный бэкэнд аутентификации. Учетные данные, соответствующие набору «чувствительных» шаблонов (включая пароль), не будут отправлены открыто в качестве части сигнала.
-
Справочник по бэкендам аутентификации
В этом разделе подробно описываются бэкэнды аутентификации, поставляемые с Django. Сведения о том, как их использовать и как создать собственные бэкэнды аутентификации, см. в разделе Раздел о других источниках аутентификации в Руководстве по аутентификации пользователей.
Доступные бэкэнды аутентификации
Следующие бэкэнды доступны в django.contrib.auth.backends:
-
class ModelBackend[source] -
Это по умолчанию используемый Django механизм аутентификации. Он выполняет аутентификацию по идентификатору пользователя и паролю. Для стандартной модели пользователя Django, идентификатором является имя пользователя, для пользовательских моделей — поле, указанное в USERNAME_FIELD (см. Настройка пользователей и аутентификации).
Он также обрабатывает модель стандартных разрешений, определённую для
UserиPermissionsMixin.has_perm(),get_all_permissions(),get_user_permissions()иget_group_permissions()позволяют передавать объект в качестве параметра для разрешений, специфичных для объекта, но этот механизм не реализует их, кроме как возвращает пустой набор разрешений, еслиobj is not None.-
authenticate(username=None, password=None, **kwargs)[source] -
Попытка аутентификации
usernameс помощьюpassword, вызываяUser.check_password. Еслиusernameне указан, он пытается получить имя пользователя изkwargsиспользуя ключCustomUser.USERNAME_FIELD. Возвращает аутентифицированного пользователя илиNone.
-
get_user_permissions(user_obj, obj=None)[source] -
Возвращает набор строк разрешений, имеющихся у
user_objот собственных разрешений пользователя. Возвращает пустой набор, еслиis_anonymous()илиis_activeравнаFalse.
-
get_group_permissions(user_obj, obj=None)[source] -
Возвращает набор строк разрешений, имеющихся у
user_objиз разрешений групп, к которым он принадлежит. Возвращает пустой набор, еслиis_anonymous()илиis_activeравнаFalse.
-
get_all_permissions(user_obj, obj=None)[source] -
Возвращает набор строк разрешений, имеющихся у
user_obj, включая как разрешения пользователя, так и группы разрешений. Возвращает пустой набор, еслиis_anonymous()илиis_activeравнаFalse.
-
has_perm(user_obj, perm, obj=None)[source] -
Использует
get_all_permissions()для проверки наличия разрешенияuser_objуperm. ВозвращаетFalseесли пользователь неis_active.
-
has_module_perms(self, user_obj, app_label)[source] -
Возвращает, имеет ли
user_objкакие-либо разрешения на приложениеapp_label.
-
-
class RemoteUserBackend[source] -
Используйте этот механизм аутентификации для использования аутентификации, обрабатываемой внешними для Django системами. Он выполняет аутентификацию, используя имена пользователей, переданные в
request.META['REMOTE_USER']. См. документацию Аутентификация по REMOTE_USER.Если вам нужен больший контроль, вы можете создать собственный механизм аутентификации, наследуемый от этого класса и переопределить эти атрибуты или методы:
-
RemoteUserBackend.create_unknown_user -
TrueилиFalse. Определяет, создаётся ли объектUser, если он ещё не находится в базе данных. По умолчаниюTrue.
-
RemoteUserBackend.authenticate(remote_user)[source] -
Переданный как
remote_userимя пользователя считается надёжным. Этот метод просто возвращает объектUserс заданным именем пользователя, создавая новый объектUser, еслиcreate_unknown_userравенTrue.Возвращает
None, еслиcreate_unknown_userравноFalseи объектUserс данным именем пользователя не найден в базе данных.
-
RemoteUserBackend.clean_username(username)[source] -
Выполняет любую очистку имени пользователя (например, удаление информации LDAP DN) перед использованием его для получения или создания объекта
User. Возвращает очищенное имя пользователя.
-
RemoteUserBackend.configure_user(user)[source] -
Настраивает недавно созданного пользователя. Этот метод вызывается сразу после создания нового пользователя и может использоваться для выполнения пользовательских действий настройки, таких как установка групп пользователя на основе атрибутов в каталоге LDAP. Возвращает объект пользователя.
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.8/ref/contrib/auth/