django.contrib.auth

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

Модель User

класс models.User

Поля

класс models.User

У объектов User есть следующие поля:

username

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

Длины max_length должно хватить во многих ситуациях. Если вам нужна большая длина, используйте вместо этого настраиваемый пользовательский шаблон . Если вы используете MySQL с кодировкой utf8mb4 (рекомендуется для полной поддержки Unicode), укажите самое большее, max_length=191 потому что в этом случае MySQL может создавать только уникальные индексы длиной до 191 символа.

first_name

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

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

max_length Увеличен с 30 до 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, возвращаются False для неактивных пользователей.

is_superuser

Логическое значение. Указывает, что у этого пользователя есть все разрешения без необходимости их явно назначать.

last_login

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

date_joined

Отметка времени, указывающая дату создания учетной записи. По умолчанию устанавливается дата / время создания учетной записи.

Атрибуты

класс models.User
is_authenticated

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

is_anonymous

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

Методы

класс models.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 )

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

set_unusable_password()

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

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

has_usable_password()

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

get_user_permissions( obj = Нет )
Новое в Django 3.0.

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

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

get_group_permissions( obj = Нет )

Возвращает набор разрешений (строк), которые пользователь получает через группы, к которым он принадлежит.

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

get_all_permissions( obj = Нет )

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

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

has_perm( perm , obj = None )

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

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

has_perms( perm_list , obj = Нет )

Возвращает, есть True ли у пользователя все указанные разрешения, причем каждое разрешение указано в формате . Если пользователь неактивен, этот метод всегда возвращается . Для активного суперпользователя этот метод всегда возвращает ."<étiquette application>.<code permission>" False True

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

has_module_perms( имя_пакета )

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

email_user( тема , сообщение , from_email = Нет , ** kwargs )

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

Методы обработчика

класс models.UserManager

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

create_user( имя пользователя , электронная почта = Нет , пароль = Нет , ** дополнительные_поля )

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

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

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

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

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

create_superuser( имя пользователя , электронная почта = Нет , пароль = Нет , ** дополнительные_поля )

То же, create_user() но определяет is_staff и is_superuser в True .

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

Параметры email и password сделаны необязательными.

with_perm( Завивка , is_active = True , include_superusers = True , бэкенд = нет , OBJ = None )
Новое в Django 3.0.

Возвращать пользователей с perm данным разрешением либо в формате, "<nom_app>.<code_de_permission>" либо в виде экземпляра Permission . Если ни у одного пользователя нет разрешения, возвращается пустой набор запросов perm .

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

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

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

Объект AnonymousUser

класс models.AnonymousUser

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

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

Модель Permission

класс models.Permission

Поля

У объектов Permission есть следующие поля:

класс models.Permission
name

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

content_type

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

codename

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

Методы

У объектов Permission те же методы доступа к данным, что и у любой другой модели Django .

Модель Group

класс models.Group

Поля

У объектов Group есть следующие поля:

класс models.Group
name

Обязательное. Максимум 150 символов. Разрешены все символы. Пример: .'Utilisateurs fantastiques'

permissions

Отношение "многие ко многим" с Permission .

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

Валидаторы

класс validators.ASCIIUsernameValidator

Поле валидатор позволяет только символы ASCII в дополнение к @ , . , + , - и _ .

класс validators.UnicodeUsernameValidator

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

Сигналы подключения и отключения

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

user_logged_in()

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

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

sender
Класс пользователя, который только что вошел в систему.
request
HttpRequest Текущий экземпляр .
user
Пользовательский экземпляр, который только что подключился.
user_logged_out()

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

sender
Как указано выше: класс пользователя, который только что вышел из системы или None если пользователь не прошел аутентификацию.
request
HttpRequest Текущий экземпляр .
user
Экземпляр пользователя, который только что вышел из системы или None если пользователь не прошел аутентификацию.
user_login_failed()

Отправляется, когда процесс входа пользователя не удался.

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

Механизмы аутентификации

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

Доступные механизмы аутентификации

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

класс BaseBackend
Новое в Django 3.0.

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

get_user_permissions( user_obj , obj = Нет )

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

get_group_permissions( user_obj , obj = Нет )

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

get_all_permissions( user_obj , obj = Нет )

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

has_perm( Не user_obj , завивка , OBJ = None )

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

класс ModelBackend

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

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

has_perm() , get_all_permissions() , get_user_permissions() И get_group_permissions() принимают в качестве параметра объект конкретных разрешений для этого объекта, но этот двигатель не реализует эту возможность в сторону Увольнение разрешений пустой набор , если

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

authenticate( запрос , имя пользователя = None , пароль = None , ** kwargs )

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

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

get_user_permissions( user_obj , obj = Нет )

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

get_group_permissions( user_obj , obj = Нет )

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

get_all_permissions( user_obj , obj = Нет )

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

has_perm( Не user_obj , завивка , OBJ = None )

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

has_module_perms( user_obj , app_label )

Указывает, user_obj есть ли у приложения хотя бы одно разрешение app_label .

user_can_authenticate()

Указывает, разрешено ли пользователю проходить аутентификацию. Для того, чтобы соответствовать AuthenticationForm кто поведение , этот метод возвращает значение для пользователей с . Разрешены пользовательские модели пользователей, у которых нет поля .interdit aux utilisateurs inactifs de se connecter False is_active=False is_active

with_perm( Не завивку , is_active = True , include_superusers = True , OBJ = None )
Новое в Django 3.0.

Возвращает всех активных пользователей с разрешениями perm как "<nom_app>.<code_de_permission>" или как экземпляр Permission . Если ни у одного пользователя нет разрешения, возвращается пустой набор запросов perm .

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

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

класс AllowAllUsersModelBackend

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

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

класс RemoteUserBackend

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

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

create_unknown_user

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

authenticate( запрос , удаленный_пользователь )

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

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

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

clean_username( имя пользователя )

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

configure_user( запрос , пользователь )

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

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

user_can_authenticate()

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

класс AllowAllUsersRemoteUserBackend

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

Служебные функции

get_user( запрос )

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

Он контролирует, присутствует ли механизм аутентификации, хранящийся в сеансе, в AUTHENTICATION_BACKENDS . Если это так, он использует метод get_user() механизма для извлечения экземпляра модели пользователя, а затем проверяет сеанс, вызывая метод get_session_auth_hash() модели пользователя.

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

Copyright ©2020 All rights reserved