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 не хранит исходный пароль.) Необработанные пароли могут быть сколь угодно длинными и содержать любые символы. См. Документацию по паролю .

groups

Отношение "многие-ко-многим" к Group

user_permissions

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

is_staff

Булево. Определяет, может ли этот пользователь получить доступ к сайту администратора.

is_active

Логическое. Определяет, следует ли считать эту учетную запись пользователя активной. Мы рекомендуем вам установить этот флаг Falseвместо удаления учетных записей; таким образом, если у ваших приложений есть внешние ключи для пользователей, внешние ключи не сломаются.

Это не обязательно влияет на то, может ли пользователь войти в систему. Для проверки наличия is_active флага не требуется серверная часть аутентификации, а функция backend ( ModelBackend) по умолчанию и функция RemoteUserBackenddo. Вы можете использовать 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>"FalseTrue

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

has_perms( perm_list , obj = Нет )

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

Если 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>"Permissionperm

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

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

Если backendпередано и определено в AUTHENTICATION_BACKENDS, то этот метод будет использовать его. В противном случае он будет использовать backendin 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 символов или меньше. Допускаются любые символы. Пример: .'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 inFalseis_active=Falseis_active

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

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

Если 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()или если хэш аутентификации сеанса не проверяется.

Copyright ©2021 All rights reserved