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 не хранит пароль в виде открытого текста). Нет ограничений ни на длину фактических паролей, ни на символы, которые они содержат. См. Документацию по паролям .
-
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
inAUTHENTICATION_BACKENDS
, если оно есть, или генерировать исключение.
-
Объект AnonymousUser
¶
-
класс
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
.
- id по-прежнему
На практике вам, вероятно, никогда не понадобится напрямую использовать объекты AnonymousUser
, но они используются в веб-запросах, как объясняется в следующем разделе.
Модель Permission
¶
-
класс
models.
Permission
¶
Поля ¶
У объектов Permission
есть следующие поля:
Методы ¶
У объектов 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
ifcreate_unknown_user
isFalse
и объект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()
механизма или если отпечаток аутентификации сеанса недействителен.