Django でのユーザー認証¶
Django はユーザー認証システムを搭載しています。ユーザーアカウント、グループ、パーミッション、そしてCookieベースのユーザーセッションを制御します。このドキュメントのこのセクションでは、デフォルトの実装がどう機能するか、またあなたのプロジェクトのニーズに対応させるための 拡張とカスタマイズ の方法を説明しています。
概要¶
Django の認証システムは、認証と認可の両方を扱います。簡単に言うと、認証はユーザーが本人であることを検証し、認可は検証されたユーザーが何を実行できるかを決定します。ここでは、認証という用語は両方のタスクを指すために使われます。
認証システムを構成するものは以下の通りです:
- ユーザ
- パーミッション: ユーザが特定のタスクを実行できるかどうかを指定するバイナリ (yes/no) フラグ
- グループ: 複数のユーザーにラベルとパーミッションを付与する一般的な方法
- 設定変更可能なパスワードハッシュシステム
- ユーザーログインのためのフォームやビューツール、もしくは内容の制限
- プラガブルなバックエンドシステム
Django の認証システムは一般的であることを狙いとしており、ウェブ上の認証システムで見られるようないくつかの機能を有していません。これらに共通する問題の解決策は、サードパーティのパッケージにて実装されます。
- パスワード強度のチェック
- ログイン試行数の制限
- サードパーティに対する認証 (OAuthなど)
- オブジェクトレベルのパーミッション
インストール¶
認証関連をサポートする仕組みは、 django.contrib.auth
内の Django contrib モジュールとしてバンドルされています。デフォルトでは、必要な設定は django-admin startproject
で生成される settings.py
にすでに記述されています。これらは、あなたの INSTALLED_APPS
に記述される 2 つの項目により構成されています:
'django.contrib.auth'
は、認証フレームワークおよびそのデフォルトのモデルの中心機能を含みます。'django.contrib.contenttypes'
は Django コンテンツタイプシステム です。パーミッションをあなたが作成したモデルと紐付けられるようにします。
そして、あなたの MIDDLEWARE
内にある以下の項目です:
SessionMiddleware
は、リクエストを横断する セッション を管理します。AuthenticationMiddleware
は、セッションを使用してユーザーをリクエストに関連付けます。
これらの設定を整えた上で、manage.py migrate
コマンドを実行すると、インストールしたアプリで定義されている認証先モデルや権限モデルに必要なデータベーステーブルが作成されます。