Django でのユーザー認証¶
Django はユーザー認証システムを搭載しています。ユーザーアカウント、グループ、パーミッション、そしてCookieベースのユーザーセッションを制御します。このドキュメントのこのセクションでは、デフォルトの実装がどう機能するか、またあなたのプロジェクトのニーズに対応させるための 拡張とカスタマイズ の方法を説明しています。
オーバービュー¶
Django の認証システムは、認証と権限の両方を扱います。簡単に言うと、認証はユーザーが誰であるかを立証し、権限は立証されたユーザーが何をすることが許されているかを決定します。ここでは、認証という用語は両方のタスクを指すために使われます。
認証システムを構成するものは以下の通りです:
ユーザ
パーミッション: ユーザが特定のタスクを実行できるかどうかを指定するバイナリ (yes/no) フラグ
グループ: 複数のユーザーにラベルとパーミッションを付与する一般的な方法
設定変更可能なパスワードハッシュシステム
ユーザーログインのためのフォームやビューツール、もしくは内容の制限
プラガブルなバックエンドシステム
Django の認証システムは一般的であることを狙いとしており、ウェブ上の認証システムで見られるようないくつかの機能を有していません。これらに共通する問題の解決策は、サードパーティのパッケージにて実装されます。
パスワード強度のチェック
ログイン試行数の制限
サードパーティに対する認証 (OAuthなど)
インストール¶
Authentication support is bundled as a Django contrib module in
django.contrib.auth
. By default, the required configuration is already
included in the settings.py
generated by django-admin
startproject
, these consist of two items listed in your
INSTALLED_APPS
setting:
'django.contrib.auth'
contains the core of the authentication framework, and its default models.'django.contrib.contenttypes'
is the Django content type system, which allows permissions to be associated with models you create.
and these items in your MIDDLEWARE
setting:
SessionMiddleware
manages sessions across requests.AuthenticationMiddleware
associates users with requests using sessions.
With these settings in place, running the command manage.py migrate
creates
the necessary database tables for auth related models and permissions for any
models defined in your installed apps.