Django認可の基本|ユーザー・グループ・パーミッションの仕組みを初心者向けに徹底解説
生徒
「Djangoでログインはできたんですが、誰がどのページを使っていいのかは、どうやって決めるんですか?」
先生
「Djangoには“認可”という仕組みがあって、ユーザーごとにできることを細かく決められます。」
生徒
「認可って、認証とは違うんですか?」
先生
「ええ。認証は本人確認、認可は権限の管理です。まずはそこから順番に見ていきましょう。」
1. Django認可とは?認証との違いを超やさしく理解
Django認可とは、「その人が何をしてよいか」を決める仕組みです。よく似た言葉に認証がありますが、役割はまったく違います。
認証は「あなたは誰ですか?」を確認することです。ログイン画面でユーザー名やパスワードを入力する場面を想像してください。一方、認可は「あなたは何をしていいですか?」を決めます。
たとえば、建物に入るときに身分証を見せるのが認証、入ったあとに「この部屋は関係者だけ入室可」と制限するのが認可です。Djangoでは、この認可をとても分かりやすく管理できます。
2. Djangoのユーザーとは?まずは人を登録する考え方
Djangoの認可は、まずユーザーから始まります。ユーザーとは、システムを使う一人ひとりの人のことです。管理画面で登録でき、名前やパスワードを持っています。
パソコンを触ったことがなくても、「会員登録した人」と考えれば大丈夫です。Djangoでは最初からユーザー管理の仕組みが用意されており、自分で一から作る必要はありません。
from django.contrib.auth.models import User
user = User.objects.create_user(
username="taro",
password="password123"
)
このコードは、「taro」という名前のユーザーを作っています。難しそうに見えますが、「新しい会員を一人追加した」と考えてください。
3. グループとは?まとめて管理するための便利機能
グループは、ユーザーをまとめる箱のようなものです。たとえば「管理者」「一般ユーザー」「スタッフ」といったグループを作り、そこに人を入れます。
一人ひとりに細かく設定するのは大変ですが、グループを使えば一気に管理できます。会社で部署ごとに役割が決まっているのと同じ考え方です。
from django.contrib.auth.models import Group
group = Group.objects.create(name="staff")
group.user_set.add(user)
この例では、「staff」というグループを作り、先ほどのユーザーを入れています。これで、この人はスタッフ扱いになります。
4. パーミッションとは?できることを細かく決める鍵
パーミッションとは、「この操作をしていい」という許可のことです。日本語では権限と呼ばれます。
たとえば「記事を追加してよい」「削除してよい」といった許可がパーミッションです。Djangoでは、モデルを作ると自動で基本的なパーミッションが用意されます。
user.has_perm("blog.add_post")
このコードは、「このユーザーは記事を追加できるか?」を確認しています。結果が真ならできる、偽ならできない、という意味です。
5. グループとパーミッションの関係を図で考える
ユーザー、グループ、パーミッションは、次のような関係です。
ユーザーはグループに入ります。グループにはパーミッションが設定されます。つまり、ユーザーはグループ経由で権限を持つのです。
鍵付きのロッカーを想像してください。グループは鍵の束、パーミッションは一本一本の鍵、ユーザーはそれを持つ人です。
group.permissions.add(permission)
このようにして、グループに権限を追加すると、その中の全員が同じことをできるようになります。
6. ビューで認可を使う基本的な考え方
Djangoでは、ページ表示の処理をビューと呼びます。認可は、このビューでよく使われます。
「このページはログインしていて、なおかつ権限を持つ人だけ見られる」といった制御ができます。
from django.contrib.auth.decorators import permission_required
@permission_required("blog.view_post")
def post_list(request):
return render(request, "post_list.html")
この例では、記事を見る権限がある人だけがページを開けます。ない場合は自動的に止められます。
7. Django認可を使うメリットと安心ポイント
Djangoの認可は、最初から用意されているため安全性が高く、初心者でも安心して使えます。自分で難しい仕組みを作る必要がありません。
また、管理画面から操作できるため、コードを書かなくてもユーザーやグループ、パーミッションを変更できます。
Django認可を理解すると、「誰が」「何を」「どこまでできるか」をはっきり分けられるようになり、Webアプリの安全性と使いやすさが大きく向上します。