Django認証の基本設定をやさしく解説|AUTH_USER_MODELと認証バックエンドの仕組み
生徒
「Djangoでログイン機能を作るとき、認証ってよく聞くんですが、そもそも何をしているんですか?」
先生
「Djangoの認証は、誰がログインしているかを確認して、安全にサービスを使ってもらうための仕組みです。会員証を見せて入館するイメージに近いですね。」
生徒
「AUTH_USER_MODELって設定ファイルで見たんですが、何を書いているんですか?」
先生
「それは“ユーザー情報をどの設計図で管理するか”をDjangoに教える大事な設定です。順番に見ていきましょう。」
1. Django認証とは何かを超やさしく説明
Django認証とは、「この人は誰か」「ログインしてよい人か」を判断するための仕組みです。Webサイトでログインするとき、メールアドレスやパスワードを入力しますよね。Djangoはそれを受け取って、正しいかどうかを確認します。
パソコンを触ったことがない人向けに例えると、学校の名簿を思い浮かべてください。名簿に名前があって、番号が一致すれば教室に入れます。Django認証は、この名簿と確認作業を自動でやってくれる便利な先生のような存在です。
Djangoには最初から「認証機能」が用意されているので、自分でゼロから作る必要はありません。これがDjangoが初心者にやさしい理由の一つです。
2. ユーザーとは何か|Djangoにおける利用者の考え方
Djangoでいう「ユーザー」とは、ログインする人の情報をまとめたものです。名前、パスワード、メールアドレスなどがセットになっています。
専門用語で「モデル」と呼ばれますが、これは設計図のようなものです。「ユーザーには何の情報を持たせるか」を決めています。
Djangoには最初から標準ユーザーが用意されています。ですが、あとから「誕生日も保存したい」「ニックネームを追加したい」と思うことがあります。そのときに重要になるのがAUTH_USER_MODELです。
3. AUTH_USER_MODELとは何か|超重要な設定項目
AUTH_USER_MODELは、「どのユーザーモデルを使いますか?」とDjangoに伝えるための設定です。設定ファイルであるsettings.pyに書きます。
例えるなら、名簿の種類を指定するようなものです。Aクラスの名簿を使うのか、Bクラスの名簿を使うのかを決めます。
# settings.py
AUTH_USER_MODEL = 'auth.User'
これは「Djangoが最初から用意しているユーザーを使います」という意味です。初心者のうちは、この設定を理解するだけで十分です。
4. カスタムユーザーとAUTH_USER_MODELの関係
カスタムユーザーとは、自分で作ったユーザー設計図のことです。例えば「電話番号を必須にしたい」など、標準では足りないときに使います。
その場合、AUTH_USER_MODELを自分のアプリに変更します。
# settings.py
AUTH_USER_MODEL = 'accounts.CustomUser'
accountsはアプリ名、CustomUserはモデル名です。ここを間違えるとログインできなくなるため、Django認証の中でも特に大事なポイントです。
5. 認証バックエンドとは何かをイメージで理解
認証バックエンドとは、「どの方法で本人確認をするか」を決める仕組みです。難しく聞こえますが、やっていることは単純です。
例えば、学校の門で先生が名簿を見る方法、ICカードを使う方法がありますよね。どの方法で確認するかを決めるのが認証バックエンドです。
# settings.py
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
]
これは「ユーザー名とパスワードで確認します」という一番基本の方法です。Django認証では、複数のバックエンドを指定することもできます。
6. Djangoはどうやってログインを判断しているのか
ログイン画面で入力された情報は、まず認証バックエンドに送られます。バックエンドはユーザー情報と照らし合わせて、正しいかどうかを確認します。
正しければ「この人はログインOK」と判断され、ユーザー情報が保存されます。これを「ログイン状態」と呼びます。
from django.contrib.auth import authenticate
user = authenticate(username='taro', password='password123')
このコードは、「この名前とパスワードの人はいますか?」とDjangoに聞いているイメージです。
7. Django認証を使うメリットと初心者向け注意点
Django認証の最大のメリットは、安全性と簡単さです。パスワードは自動で暗号化され、危険な保存方法を避けられます。
初心者が気をつける点は、AUTH_USER_MODELは途中で変更しにくいことです。後から変えるとデータベースに影響が出ます。
そのため、「最初にどんなユーザー情報が必要か」を考えることが、Django認証ではとても大切です。