django.contrib.auth
¶
Этот документ предоставляет справочные материалы по API для компонентов системы аутентификации Django. Дополнительные сведения об использовании этих компонентов или настройке проверки подлинности и авторизации см. В руководстве по теме проверки подлинности .
User
модель ¶
-
класс
models.
User
¶
Поля ¶
-
класс
models.
User
User
объекты имеют следующие поля:-
username
¶ Обязательный. 150 символов или меньше. Usernames может содержать буквенно - цифровые,
_
,@
,+
,.
и-
символы.Этого
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
флага не требуется серверная часть аутентификации, а функция backend (ModelBackend
) по умолчанию и функцияRemoteUserBackend
do. Вы можете использоватьAllowAllUsersModelBackend
или,AllowAllUsersRemoteUserBackend
если хотите разрешить неактивным пользователям входить в систему. В этом случае вы также захотите настроитьAuthenticationForm
используемый,LoginView
поскольку он отклоняет неактивных пользователей. Имейте в виду, что методы проверки разрешений, такие какhas_perm()
аутентификация в администраторе Django, возвращаютсяFalse
для неактивных пользователей.
-
is_superuser
¶ Булево. Обозначает, что у этого пользователя есть все разрешения, без их явного назначения.
-
last_login
¶ Дата и время последнего входа пользователя в систему.
-
date_joined
¶ Дата и время, указывающее, когда была создана учетная запись. По умолчанию устанавливается текущая дата / время при создании учетной записи.
-
Атрибуты ¶
-
класс
models.
User
-
is_authenticated
¶ Атрибут только для чтения, который есть всегда
True
(а неAnonymousUser.is_authenticated
всегдаFalse
). Это способ узнать, прошел ли пользователь аутентификацию. Это не подразумевает каких-либо разрешений и не проверяет, активен ли пользователь или имеет ли действующий сеанс. Несмотря на то, что обычно вы проверяете этот атрибут,request.user
чтобы узнать, был ли он заполненAuthenticationMiddleware
(представляющим текущего пользователя, вошедшего в систему), вы должны знать, что этот атрибут предназначенTrue
для любогоUser
экземпляра.
-
is_anonymous
¶ Атрибут только для чтения, который есть всегда
False
. Это способ различения объектовUser
иAnonymousUser
объектов. Как правило, вы должны предпочесть использованиеis_authenticated
этого атрибута.
-
Методы ¶
-
класс
models.
User
-
get_username
() ¶ Возвращает имя пользователя для пользователя. Поскольку
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_user_permissions
( obj = Нет ) ¶ Возвращает набор строк разрешений, которые есть у пользователя напрямую.
Если
obj
передается, возвращает только разрешения пользователя для этого конкретного объекта.
-
get_group_permissions
( obj = Нет ) ¶ Возвращает набор строк разрешений, которые есть у пользователя, через их группы.
Если
obj
передается, возвращает только разрешения группы для этого конкретного объекта.
-
get_all_permissions
( obj = Нет ) ¶ Возвращает набор строк разрешений, которые есть у пользователя, как для групп, так и для пользователей.
Если
obj
передается, возвращает только разрешения для этого конкретного объекта.
-
has_perm
( допустимо , obj = Нет ) ¶ Возвращает,
True
если у пользователя есть указанное разрешение, где perm находится в формате . (см. документацию по разрешениям ). Если пользователь неактивен, этот метод всегда будет возвращаться . Для активного суперпользователя этот метод всегда будет возвращать ."<app label>.<permission codename>"
False
True
Если
obj
передается, этот метод проверяет не разрешение для модели, а для этого конкретного объекта.
-
has_perms
( perm_list , obj = Нет ) ¶ Возвращает,
True
если у пользователя есть все указанные разрешения, где каждое разрешение находится в формате . Если пользователь неактивен, этот метод всегда будет возвращаться . Для активного суперпользователя этот метод всегда будет возвращать ."<app label>.<permission codename>"
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
автоматически преобразуется в нижний регистр, а для возвращаемогоUser
объекта будетis_active
установлено значениеTrue
.Если пароль не указан,
set_unusable_password()
будет вызван.Эти
extra_fields
ключевые аргументы передаются через кUser
«S__init__
метода позволяют устанавливать произвольные поля на пользовательской модели пользователя .См. Раздел Создание пользователей для примера использования.
-
create_superuser
( имя пользователя , электронная почта = Нет , пароль = Нет , ** дополнительные_поля ) ¶ То же, что
create_user()
, но наборыis_staff
иis_superuser
кTrue
.
-
with_perm
( Завивка , is_active = True , include_superusers = True , бэкенд = нет , OBJ = None ) ¶ Возвращает пользователей, у которых есть данное разрешение,
perm
либо в формате, либо в виде экземпляра. Возвращает пустой набор запросов, если не найдено ни одного пользователя ."<app label>.<permission codename>"
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 символов или меньше. Допускаются любые символы. Пример: .
'Awesome Users'
-
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
() ¶ Отправляется при вызове метода выхода из системы.
sender
- Как указано выше: класс пользователя, который только что вышел из системы или
None
если пользователь не прошел аутентификацию. request
- Текущий
HttpRequest
экземпляр. user
- Экземпляр пользователя, который только что вышел из системы или
None
если пользователь не прошел аутентификацию.
-
user_login_failed
() ¶ Отправляется, когда пользователю не удалось войти в систему.
sender
- Имя модуля, используемого для аутентификации.
credentials
- Словарь аргументов ключевых слов, содержащих учетные данные пользователя, которые были переданы
authenticate()
или ваш собственный сервер аутентификации. Учетные данные, соответствующие набору «конфиденциальных» шаблонов (включая пароль), не будут отправлены в открытом виде как часть сигнала. request
HttpRequest
Объекта, если один был предоставленauthenticate()
.
Бэкэнды аутентификации ¶
В этом разделе подробно описаны механизмы аутентификации, которые поставляются с Django. Для получения информации о том, как их использовать и как написать собственные механизмы аутентификации, см. Раздел « Другие источники аутентификации» руководства по аутентификации пользователя .
Доступные бэкенды аутентификации ¶
Следующие серверные ВМ доступны в django.contrib.auth.backends
:
-
класс
BaseBackend
¶ Базовый класс, который предоставляет реализации по умолчанию для всех требуемых методов. По умолчанию он отклоняет любого пользователя и не предоставляет никаких разрешений.
-
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.
-
has_perm
( Не user_obj , завивка , OBJ = None ) ¶ Используется
get_all_permissions()
для проверки наличияuser_obj
строки разрешенияperm
.
-
-
класс
ModelBackend
¶ Это серверная часть аутентификации по умолчанию, используемая Django. Он аутентифицируется с использованием учетных данных, состоящих из идентификатора пользователя и пароля. Для модели пользователя Django по умолчанию идентификатором пользователя является имя пользователя, для пользовательских моделей это поле, указанное в USERNAME_FIELD (см. Настройка пользователей и аутентификация ).
Он также обрабатывает модель разрешений по умолчанию, как определено для
User
иPermissionsMixin
.has_perm()
,get_all_permissions()
,get_user_permissions()
, Иget_group_permissions()
позволить объекту быть передан в качестве параметра для объектно-специфических разрешений, но это бэкенд не реализует их, кроме возвращения пустого набора разрешений , если это .obj is not None
with_perm()
также позволяет передавать объект в качестве параметра, но, в отличие от других методов, возвращает пустой набор запросов if .obj is not None
-
authenticate
( запрос , имя пользователя = Нет , пароль = Нет , ** 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
которого , этот метод возвращается для пользователей с . Разрешены пользовательские модели пользователей, у которых нет поля.prohibits inactive users from logging in
False
is_active=False
is_active
-
with_perm
( Не завивку , is_active = True , include_superusers = True , OBJ = None ) ¶ Возвращает всех активных пользователей, у которых есть разрешение
perm
в форме или экземпляре. Возвращает пустой набор запросов, если не найдено ни одного пользователя ."<app label>.<permission codename>"
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
еслиcreate_unknown_user
есть,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()
или если хэш аутентификации сеанса не проверяется.