django.contrib.authLink to this heading
このドキュメントでは、Django の 認証システムのコンポーネントの API リファレンス資料を提供しています。 これらのコンポーネントの使い方や、認証と認可をカスタマイズする方法の詳細は、認証トピックガイド を参照してください。
User モデルLink to this heading
- class models.UserLink to this definition
フィールドLink to this heading
- class models.User
Userオブジェクトには、以下のフィールドがあります:- usernameLink to this definition
必須です。150 文字以下です。英数字のほか、
_、@、+、.、-が使えます。大半のユースケースでは、
max_lengthの設定で十分対応できます。より長い長さが必要な場合は、カスタムユーザーモデル を使用してください。
- first_nameLink to this definition
オプション (
blank=True)。150 文字以下。
- last_nameLink to this definition
オプション (
blank=True)。150 文字以下。
- emailLink to this definition
オプション (
blank=True)。メールアドレス。
- passwordLink to this definition
必須。パスワードのハッシュとメタデータです。(Djangoは生のパスワードを保存しません。)生のパスワードは任意の長さにでき、任意の文字を含むことができます。このフィールドのメタデータは、パスワードが使用不可であることを示すことがあります。詳細については、パスワードに関するドキュメント を参照してください。
- groupsLink to this definition
Groupへの多対多のリレーションシップです。
- user_permissionsLink to this definition
Permissionへの多対多のリレーションシップです。
- is_staffLink to this definition
真偽値。このユーザに管理サイトへのアクセスを許可します。
- is_activeLink to this definition
ブール値。このユーザーアカウントをアクティブとしてマークします。アカウントを削除する代わりに、このフラグを
Falseに設定することを推奨します。そうすれば、アプリケーションにユーザーへの外部キーがある場合でも、外部キーが壊れることはありません。この属性は、必ずしもユーザがログインできるかどうかをコントロールするわけではありません。認証バックエンドは必ずしも
is_activeフラグをチェックしませんが、デフォルトのバックエンド (ModelBackend) とRemoteUserBackendはチェックを行います。非アクティブのユーザがログインできるようにしたい場合は、AllowAllUsersModelBackendやAllowAllUsersRemoteUserBackendを使うことができます。この場合、非アクティブのユーザを拒否してしまうので、LoginViewによって使われるAuthenticationFormもカスタマイズした方が良いでしょう。has_perm()のようなパーミッションチェックのメソッドや Django admin 内の認証はすべて非アクティブユーザに対してFalseを返すことに注意してください。
- is_superuserLink to this definition
真偽値。このユーザには特にパーミッションを割り当てずに、すべてのパーミッションを持つものとして扱います。
- last_loginLink to this definition
ユーザーが最後にログインした日時です。
- date_joinedLink to this definition
アカウントが作成された日時。
属性Link to this heading
- class models.User
- is_authenticatedLink to this definition
(
AnonymousUser.is_authenticatedが常にFalseなのとは対照的に) 常にTrueの読み取り専用属性です。ユーザが認証済みかどうかを知らせる方法です。これはパーミッションという意味ではなく、ユーザーがアクティブかどうか、また有効なセッションがあるかどうかをチェックするわけでもありません。 通常、request.userのこの属性をチェックしてAuthenticationMiddleware(現在ログイン中のユーザを表します) によって格納されているかどうかを調べます。Userのインスタンスの場合、この属性はTrueとなります。
- is_anonymousLink to this definition
常に
Falseの読み取り専用属性です。UserオブジェクトとAnonymousUserオブジェクトを区別する方法です。一般的に、is_authenticatedを使う方が好ましいと言えます。
メソッドLink to this heading
- class models.User
- get_username()Link to this definition
ユーザのユーザ名を返します。
Userモデルはスワップアウトされることがあるので、ユーザ名を直接参照する代わりにこのメソッドを使う必要があります。
- get_full_name()Link to this definition
first_nameとlast_nameをスペースでつないだ文字列を返します。
- get_short_name()Link to this definition
first_nameを返します。
- set_password(raw_password)Link to this definition
指定された生の文字列に、ユーザのパスワードをセットし、パスワードのハッシュ処理を行います。
Userは保存しません。raw_passwordがNoneのとき、set_unusable_password(()が使われるのと同じように、パスワードは使用に適さないパスワードになります。
- check_password(raw_password)Link to this definition
- acheck_password(raw_password)Link to this definition
非同期バージョン:
acheck_password()与えられた生の文字列が、ユーザに対して正しいパスワードであれば
Trueを返します。 (比較する際にはパスワードハッシュを処理します。)
- set_unusable_password()Link to this definition
ユーザーのパスワードが設定されていないことを示すために、
passwordフィールドのメタデータを更新します。これは、パスワードが空の文字列であることとは異なります。このユーザーに対してcheck_password()を呼び出しても、決してTrueを返しません。このメソッドはUserオブジェクトを保存しません。アプリケーションの認証が LDAP ディレクトリなどの既存の外部ソースに対して行われている場合は、これが必要になることがあります。
- has_usable_password()Link to this definition
ユーザに対して
set_unusable_password()が呼ばれている場合、Falseを返します。
- get_user_permissions(obj=None)Link to this definition
- aget_user_permissions(obj=None)Link to this definition
非同期バージョン:
aget_user_permissions()ユーザーが直接持っているパーミッション文字列のセットを返します。
もし
objが渡された場合、この特定のオブジェクトのユーザパーミッションのみを返します。
- get_group_permissions(obj=None)Link to this definition
- aget_group_permissions(obj=None)Link to this definition
非同期バージョン:
aget_group_permissions()ユーザがグループを通して持つパーミッションの文字列のセットを返します。
objが渡されたとき、指定されたオブジェクトに対するグループパーミッションのみを返します。
- get_all_permissions(obj=None)Link to this definition
- aget_all_permissions(obj=None)Link to this definition
非同期バージョン:
aget_all_permissions()ユーザがグループおよびユーザパーミッションを通して持つパーミッションの文字列のセットを返します。
objが渡された場合、指定されたオブジェクトに対するパーミッションのみを返します。
- has_perm(perm, obj=None)Link to this definition
- ahas_perm(perm, obj=None)Link to this definition
非同期バージョン:
ahas_perm()perm が
"<app label>.<permission codename>"という形式で、ユーザーが特定の権限を持っている場合、Trueを返します (詳しくは パーミッション のドキュメントを参照)。もしユーザーが非アクティブの場合、このメソッドは常にFalseを返します。アクティブなスーパーユーザーの場合、このメソッドは常にTrueを返します。objが渡された場合、このメソッドは指定されたオブジェクトに対してパーミッションのチェックを行い、モデルに対しては行いません。
- has_perms(perm_list, obj=None)Link to this definition
- ahas_perms(perm_list, obj=None)Link to this definition
非同期バージョン:
ahas_perms()指定された権限を持つかどうかを判定し、持つ場合は
Trueを返します。各 perm は"<app label>.<permission codename>"の形式です。ユーザーが非アクティブの場合、このメソッドは常にFalseを返します。アクティブなスーパーユーザーの場合、このメソッドは常にTrueを返します。objが渡された場合、このメソッドは指定されたオブジェクトに対してパーミッションのチェックを行い、モデルに対しては行いません。
- has_module_perms(package_name)Link to this definition
- ahas_module_perms(package_name)Link to this definition
非同期バージョン:
ahas_module_perms()与えられたパッケージ (Djangoアプリのラベル) 内でユーザーが何らかの権限を持っている場合、
Trueを返します。ユーザーが非アクティブな場合、このメソッドは常にFalseを返します。アクティブなスーパーユーザーの場合、このメソッドは常にTrueを返します。
- email_user(subject, message, from_email=None, **kwargs)Link to this definition
ユーザに E メールを送信します。
from_emailがNoneの場合、Django はDEFAULT_FROM_EMAILを使用します。全ての**kwargsは元となるsend_mail()呼び出しに渡されます。
マネージャメソッドLink to this heading
- class models.UserManagerLink to this definition
Userモデルは、(BaseUserManagerで提供されるメソッドに加えて) 以下のヘルパーメソッドを有する独自のマネージャを持っています:- create_user(username, email=None, password=None, **extra_fields)Link to this definition
- acreate_user(username, email=None, password=None, **extra_fields)Link to this definition
非同期バージョン:
acreate_user()Userを作成、保存して返します。usernameとpasswordは指定された通りに設定されます。emailのドメイン部分は自動的に小文字に変換され、返されるUserオブジェクトにはis_activeがTrueに設定されます。パスワードが指定されなかった場合、
set_unusable_password()が呼び出されます。Eメールが指定されない場合、
emailは空文字列に設定されます。extra_fieldsキーワード引数は、Userクラスの__init__メソッドに渡され、カスタムユーザーモデル に任意のフィールドを設定することを可能にします。使用例については ユーザーの作成 を参照してください。
- create_superuser(username, email=None, password=None, **extra_fields)Link to this definition
- acreate_superuser(username, email=None, password=None, **extra_fields)Link to this definition
非同期バージョン:
acreate_superuser()create_user()と同じですが、is_staffとis_superuserをTrueにセットします。
- with_perm(perm, is_active=True, include_superusers=True, backend=None, obj=None)Link to this definition
与えられたパーミッション
permを持つユーザを"<app label>.<permission codename>"形式、またはPermissionインスタンスで返します。もしpermを持つユーザが見つからなかった場合、空のクエリセットを返します。is_activeがTrue(デフォルト) の場合、アクティブなユーザーのみを返し、Falseの場合、非アクティブなユーザーのみを返します。アクティブ状態に関わらずすべてのユーザーを返すにはNoneを使用してください。include_superusersがTrue(デフォルト) の場合、結果にはスーパーユーザーが含まれます。もし
backendが渡され、それがAUTHENTICATION_BACKENDSで定義されている場合、このメソッドはそれを使用します。そうでない場合、1つだけならばAUTHENTICATION_BACKENDS内のbackendを使用し、複数ある場合は例外を発生させます。
AnonymousUser オブジェクトLink to this heading
- class models.AnonymousUserLink to this definition
django.contrib.auth.models.AnonymousUserは、django.contrib.auth.models.Userインターフェースを実装するクラスで、以下の点が異なります。id が常に
Noneです。usernameが常に空の文字列です。get_username()が常に空の文字列を返します。is_anonymousがFalseではなくTrueです。is_authenticatedがFalseではなくTrueです。is_staffとis_superuserが常にFalseです。is_activeが常にFalseです。groupsとuser_permissionsが常に空です。set_password()、check_password()、save()、delete()がNotImplementedErrorを投げます。
実際には AnonymousUser オブジェクトを使う必要はないでしょうが、次のセクションで説明するように、Web リクエストで使用されます。
Permission モデルLink to this heading
- class models.PermissionLink to this definition
フィールドLink to this heading
Permission オブジェクトには以下のフィールドがあります:
- class models.Permission
- nameLink to this definition
必須です。255 文字以下です。例:
'Can vote'。
- content_typeLink to this definition
必須です。
ContentTypeモデルを参照する外部キーです。
- codenameLink to this definition
必須です。100 文字以下です。例:
'can_vote'。
メソッドLink to this heading
他のあらゆる Django モデル と同じように、 Permission オブジェクトも標準的なデータアクセスのメソッドが使えます。
- class models.Permission
- user_perm_strLink to this definition
-
Returns the string representation for use in
has_perm.
Group モデルLink to this heading
- class models.GroupLink to this definition
フィールドLink to this heading
Group オブジェクトには以下のフィールドがあります:
- class models.Group
- nameLink to this definition
必須。150文字以下。任意の文字が使用可能。例:
'Awesome Users'。
- permissionsLink to this definition
Permissionへの多対多のフィールドです:group.permissions.set([permission_list]) group.permissions.add(permission, permission, ...) group.permissions.remove(permission, permission, ...) group.permissions.clear()
バリデータ (Validator)Link to this heading
- class validators.ASCIIUsernameValidatorLink to this definition
ASCII 文字と数字、さらに
@、.、+、-、_のみを許可するフィールドバリデータ。
- class validators.UnicodeUsernameValidatorLink to this definition
Unicode 文字を許可するフィールドバリデータで、
@、.、+、-、_に加えて指定された文字も許可します。User.usernameのデフォルトのバリデータです。
ログインとログアウトのシグナルLink to this heading
認証フレームワークは、ユーザーがログインやログアウトをしたときの通知に使うことができる、以下の シグナル を使用します。
- user_logged_inLink to this definition
ユーザがログインに成功したときに送信されます。
このシグナルとともに送信される引数は以下の通りです:
senderたった今ログインしたユーザのクラスです。
request現在の
HttpRequestインスタンスです。userたった今ログインしたユーザのインスタンスです。
- user_logged_outLink to this definition
logout メソッドが呼ばれたときに送信されます。
sender上記の通り: たった今ログアウトしたユーザのクラス、もしくはユーザが認証されなかった場合は
Noneとなります。request現在の
HttpRequestインスタンスです。userたった今ログアウトしたユーザのインスタンスか、ユーザが認証されなかった場合は
Noneです。
- user_login_failedLink to this definition
ユーザがログインに失敗したときに送信されます。
sender認証のために使われるモジュールの名前です。
credentialsauthenticate()か独自の認証バックエンドに渡されたユーザ資格情報を含む、キーワード引数のディクショナリです。'sensitive' パターンのセットに一致する (パスワードを含んだ) 資格情報は、シグナルの一部として明確には送信されません。requestauthenticate()に提供されている場合、HttpRequestオブジェクト。
認証のバックエンドLink to this heading
このセクションでは、Django に付属する認証バックエンドについて詳しく説明します。 使用方法と独自の認証バックエンドの作成方法については、ユーザ認証ガイド の 他の認証ソースのセクション を参照してください。
利用可能な認証バックエンドLink to this heading
以下のバックエンドが django.contrib.auth.backends 内で利用可能です:
- class BaseBackendLink to this definition
すべての必須メソッドのデフォルト実装を提供する基底クラス。デフォルトでは、ユーザーを拒否し、パーミッションを提供しません。
- get_user_permissions(user_obj, obj=None)Link to this definition
- aget_user_permissions(user_obj, obj=None)Link to this definition
非同期バージョン:
aget_user_permissions()空の集合を返します。
- get_group_permissions(user_obj, obj=None)Link to this definition
- aget_group_permissions(user_obj, obj=None)Link to this definition
非同期バージョン:
aget_group_permissions()空の集合を返します。
- get_all_permissions(user_obj, obj=None)Link to this definition
- aget_all_permissions(user_obj, obj=None)Link to this definition
非同期バージョン:
aget_all_permissions()user_objが持つ権限文字列のセットを取得するには、get_user_permissions()およびget_group_permissions()を使用します。
- has_perm(user_obj, perm, obj=None)Link to this definition
- ahas_perm(user_obj, perm, obj=None)Link to this definition
非同期バージョン:
ahas_perm()user_objが権限文字列permを持っているかどうかを確認するには、get_all_permissions()メソッドを使用します。
- class ModelBackendLink to this definition
これは Django が使うデフォルトの認証バックエンドです。ユーザ識別子とパスワードからなる認証情報を使って認証します。Django のデフォルトのユーザモデルでは、ユーザ識別子はユーザ名で、カスタムユーザモデルでは USERNAME_FIELD で指定されたフィールドです (ユーザと認証のカスタマイズ を参照してください)。
また、
UserとPermissionsMixinで定義されているデフォルトのパーミッションモデルも扱います。has_perm()、get_all_permissions()、get_user_permissions()、 およびget_group_permissions()メソッドは、特定のオブジェクトの権限を扱うためにオブジェクトをパラメータとして受け取ることができますが、このバックエンドは、obj is not Noneの場合に、権限の空セットを返す以外は実装されていません。with_perm()also allows an object to be passed as a parameter, but unlike other methods it returns an empty queryset ifobj is not None.- authenticate(request, username=None, password=None, **kwargs)Link to this definition
- aauthenticate(request, username=None, password=None, **kwargs)Link to this definition
非同期バージョン:
aauthenticate()usernameとpasswordを用いて、User.check_passwordを呼び出すことで認証を試みます。もしusernameが指定されていない場合、CustomUser.USERNAME_FIELDキーを使用してkwargsからユーザー名を取得しようとします。認証されたユーザーを返すか、Noneを返します。requestはHttpRequestで、authenticate()が提供されていない場合Noneとなる可能性があります。(バックエンドでこれを通過するため).
- get_user_permissions(user_obj, obj=None)Link to this definition
- aget_user_permissions(user_obj, obj=None)Link to this definition
非同期バージョン:
aget_user_permissions()user_objが持つユーザー権限から許可文字列のセットを返します。is_anonymousまたはis_activeがFalseの場合は空のセットが返されます。
- get_group_permissions(user_obj, obj=None)Link to this definition
- aget_group_permissions(user_obj, obj=None)Link to this definition
非同期バージョン:
aget_group_permissions()ユーザーが所属するグループの権限から
user_objが持つ権限文字列のセットを返します。もしis_anonymousやis_activeがFalseの場合は空のセットを返します。
- get_all_permissions(user_obj, obj=None)Link to this definition
- aget_all_permissions(user_obj, obj=None)Link to this definition
非同期バージョン:
aget_all_permissions()user_objが持つユーザーパーミッションとグループパーミッションを含むパーミッション文字列のセットを返します。もしis_anonymousまたはis_activeがFalseの場合は空のセットを返します。
- has_perm(user_obj, perm, obj=None)Link to this definition
- ahas_perm(user_obj, perm, obj=None)Link to this definition
非同期バージョン:
ahas_perm()user_objが権限文字列permを持っているかをチェックするには、get_all_permissions()を使用します。user_objがis_activeでない場合は、Falseを返します。
- has_module_perms(user_obj, app_label)Link to this definition
- ahas_module_perms(user_obj, app_label)Link to this definition
非同期バージョン:
ahas_module_perms()user_objがアプリapp_labelに対して権限を持っているかどうかを返します。
- user_can_authenticate()Link to this definition
Returns whether the user is allowed to authenticate. To match the behavior of
AuthenticationForm.confirm_login_allowed(), this method returnsFalsefor users withis_active=False. Custom user models that don't have anis_activefield are allowed.
- with_perm(perm, is_active=True, include_superusers=True, obj=None)Link to this definition
パーミッション
permを持つ全てのアクティブユーザを"<app label>.<permission codename>"形式、またはPermissionインスタンスで返します。もしpermを持つユーザが見つからなかった場合、空のクエリセットを返します。is_activeがTrue(デフォルト) の場合、アクティブなユーザーのみを返し、Falseの場合、非アクティブなユーザーのみを返します。アクティブ状態に関わらずすべてのユーザーを返すにはNoneを使用してください。include_superusersがTrue(デフォルト) の場合、結果にはスーパーユーザーが含まれます。
- class AllowAllUsersModelBackendLink to this definition
ModelBackendと同様ですが、user_can_authenticate()は常にTrueを返すため、非アクティブなユーザーを拒否しません。このバックエンドを使用する際は、おそらく、
LoginViewで使用されるAuthenticationFormクラスをカスタマイズしたいと思うでしょう。非アクティブなユーザーを拒否するconfirm_login_allowed()メソッドをオーバーライドすることが推奨されます。
- class RemoteUserBackendLink to this definition
このバックエンドを使用して、Django 以外で処理される外部認証を利用します。これは、
request.META['REMOTE_USER']に渡されたユーザ名を使用して認証を行います。詳細は、 REMOTE_USER を使った認証方法 のドキュメントを参照してください。もしより細かな制御が必要な場合は、このクラスを継承した独自の認証バックエンドを作成し、これらの属性やメソッドをオーバーライドできます。
- create_unknown_userLink to this definition
TrueまたはFalse。データベースにユーザーオブジェクトが存在しない場合に、作成するかどうかを決定します。 デフォルトはTrueです。
- authenticate(request, remote_user)Link to this definition
- aauthenticate(request, remote_user)Link to this definition
非同期バージョン:
aauthenticate()渡された
remote_userというユーザー名は信頼されたものとして扱われます。このメソッドは、指定されたユーザー名のユーザーオブジェクトを返し、create_unknown_userがTrueの場合は新しいユーザーオブジェクトを作成します。create_unknown_userがFalseであり、指定されたユーザー名のUserオブジェクトがデータベースに見つからない場合、Noneを返します。requestはHttpRequestで、authenticate()が提供されていない場合Noneとなる可能性があります。(バックエンドでこれを通過するため).
- clean_username(username)Link to this definition
ユーザー名の使用前に (LDAP DN 情報を取り除くなど)
usernameに対して任意のクリーニングを実行します。クリーニングされたユーザー名を返します。
- configure_user(request, user, created=True)Link to this definition
- aconfigure_user(request, user, created=True)Link to this definition
非同期バージョン:
aconfigure_user()認証のたびにユーザーを設定します。このメソッドは、認証対象のユーザーを取得または作成した直後に呼び出され、たとえば LDAP ディレクトリ内の属性に基づいてユーザーのグループを設定するなどの、カスタムの初期設定アクションを実行するために使用できます。ユーザーオブジェクトを返します。ユーザーの取得または作成が同期コンテキストで行われた場合は
configure_userが、非同期コンテキストで行われた場合はaconfigure_userが呼び出されます。この設定は、リモートとローカルのシステム間で属性を同期させる方法として、ユーザーの作成時に一度だけ実行することもできますし (
createdはTrue)、既存のユーザーに対して実行することもできます (createdはFalse)。requestはHttpRequestで、authenticate()が提供されていない場合Noneとなる可能性があります。(バックエンドでこれを通過するため).
- user_can_authenticate()Link to this definition
ユーザが認証を許可されているかどうかを返します。このメソッドは
is_active=Falseを持つユーザに対してFalseを返します。is_activeフィールドを持たないカスタムユーザモデルは許可されます。
- class AllowAllUsersRemoteUserBackendLink to this definition
RemoteUserBackendと同じですが、user_can_authenticateは常にTrueを返すため、非アクティブなユーザを拒否しない点が異なります。
ユーティリティ関数Link to this heading
- get_user(request)Link to this definition
- aget_user(request)Link to this definition
非同期バージョン:
aget_user()与えられた
requestのセッションに関連付けられたユーザモデルのインスタンスを返します。セッションに保存されている認証バックエンドが
AUTHENTICATION_BACKENDSに存在するかどうかをチェックします。もし存在すれば、バックエンドのget_user()メソッドを使ってユーザーモデルのインスタンスを取得し、ユーザーモデルのget_session_auth_hash()メソッドを呼び出してセッションを検証します。検証に失敗し、SECRET_KEY_FALLBACKSが指定された場合、get_session_auth_fallback_hash()メソッドを使用して各フォールバックキーに対してセッションを検証します。セッションに保存されている認証バックエンドが
AUTHENTICATION_BACKENDSにない場合、バックエンドのget_user()メソッドでユーザが返されない場合、またはセッションの認証ハッシュが検証されない場合、AnonymousUserのインスタンスを返します。