カテゴリ: Django 更新日: 2026/02/23

Django認可入門|認証と権限(Permission)の違いを初心者向けにやさしく解説

Django認可入門|認証と権限(Permission)の違いをわかりやすく解説
Django認可入門|認証と権限(Permission)の違いをわかりやすく解説

先生と生徒の会話形式で理解しよう

生徒

「Djangoを勉強していたら、認証と認可って言葉が出てきました。何が違うんですか?」

先生

「簡単に言うと、認証は『あなたは誰?』、認可は『何をしていい?』を決める仕組みです。」

生徒

「ログインできるかどうかと、操作できる内容が違うってことですか?」

先生

「その通りです。では、パソコンを触ったことがない人でも分かるように、順番に説明していきますね。」

1. Djangoとは?認可を学ぶ前の超基本

1. Djangoとは?認可を学ぶ前の超基本
1. Djangoとは?認可を学ぶ前の超基本

Django(ジャンゴ)は、Python(パイソン)というプログラミング言語で作られたWebアプリケーション用の仕組みです。 Webアプリとは、ブラウザで使うサービスのことです。会員登録があって、ログインして、できることが人によって違う。 こうした仕組みを作るときにDjangoはとても役立ちます。

Djangoには最初から「ユーザー管理」「ログイン」「権限管理」といった機能が用意されています。 その中で重要なのが「認証」と「認可」です。

2. 認証(Authentication)とは何か

2. 認証(Authentication)とは何か
2. 認証(Authentication)とは何か

認証とは、「この人は本当に登録された本人か?」を確認する仕組みです。 たとえば、家に入るときに鍵を使いますよね。その鍵が合えば中に入れます。 これと同じで、ユーザー名とパスワードが合っているかを確認するのが認証です。

Djangoでは、ログイン処理はすでに用意されています。初心者でも難しい処理を書かなくて済みます。


from django.contrib.auth import authenticate, login

user = authenticate(username="taro", password="password123")
if user is not None:
    login(request, user)

上のコードは、「ユーザー名とパスワードが正しければログインさせる」という意味です。 authenticateは「本人確認」、loginは「ログイン状態にする」処理です。

3. 認可(Authorization)とは何か

3. 認可(Authorization)とは何か
3. 認可(Authorization)とは何か

認可とは、「この人は何をしていいのか」を決める仕組みです。 会社を例にすると、社員証で入館できるのが認証、会議室や社長室に入れるかが認可です。

Djangoの認可では「権限(Permission)」という考え方を使います。 権限とは、「この操作をしてよい」という許可証のようなものです。

4. DjangoのPermission(権限)の基本

4. DjangoのPermission(権限)の基本
4. DjangoのPermission(権限)の基本

Djangoでは、データを作る・見る・直す・消す、という基本操作ごとに権限が用意されています。 たとえば「記事を削除できる人」「記事を読むだけの人」といった違いです。


if request.user.has_perm("blog.delete_post"):
    print("削除できます")
else:
    print("削除できません")

has_permは「この権限を持っていますか?」と確認する命令です。 blog.delete_postは「ブログの記事を削除する権限」を表しています。

5. 認証と認可の違いをまとめて整理

5. 認証と認可の違いをまとめて整理
5. 認証と認可の違いをまとめて整理

ここで一度、認証と認可の違いを整理します。 認証は「ログインできるかどうか」、認可は「ログイン後に何ができるか」です。

Djangoでは、まず認証でユーザーを確認し、その後に認可で操作内容を制限します。 この順番がとても大切です。

6. ビューで認可を使う簡単な例

6. ビューで認可を使う簡単な例
6. ビューで認可を使う簡単な例

Djangoのビューとは、画面の処理を書く場所です。 ここで権限チェックをすると、不正な操作を防げます。


from django.http import HttpResponse

def secret_view(request):
    if not request.user.is_authenticated:
        return HttpResponse("ログインしてください")

    if not request.user.has_perm("app.view_secret"):
        return HttpResponse("権限がありません")

    return HttpResponse("秘密の情報です")

is_authenticatedは「ログインしているか」を確認します。 そのあとで権限をチェックするのが基本の流れです。

7. テンプレートでの認可チェック

7. テンプレートでの認可チェック
7. テンプレートでの認可チェック

Djangoでは、画面の表示部分をテンプレートと呼びます。 テンプレートでも権限によって表示を変えることができます。


{% if perms.blog.add_post %}
<button>記事を追加</button>
{% endif %}

permsは「権限一覧」を意味します。 権限がある人だけにボタンを表示することで、操作ミスを防げます。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

初心者がよく混乱するのは、「ログインできるのに操作できない」状態です。 これは認証は成功しているが、認可が足りないケースです。

Djangoでは、認証と認可がはっきり分かれているため、どちらの問題かを切り分けることが大切です。 まずログインできているか、次に権限があるか、この順で確認しましょう。

カテゴリの一覧へ
新着記事
New1
Flask
Flaskで非同期フォーム送信(Ajax POST)を実装する方法を解説!初心者でもわかるステップ解説
New2
Python
Pythonで定数を定義する方法!変更されない変数の書き方と命名ルールを初心者向けに解説
New3
Python
PythonでMySQLに接続する方法!pymysqlの基本的な使い方
New4
Flask
FlaskのURLルールとは?ルーティングの基本と動的URLの作り方を解説
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonとは何か?初心者向けにできること・特徴・インストール手順までやさしく解説
No.2
Java&Spring記事人気No2
Flask
Flaskでデータベースを使う基本!SQLAlchemyの導入方法をやさしく解説
No.3
Java&Spring記事人気No3
Python
Pythonでリストの要素を検索・取得する方法!index()やin演算子の活用法
No.4
Java&Spring記事人気No4
Python
Pythonプログラムの書き方を基礎から学ぼう!初心者が覚えるべき文法とは?
No.5
Java&Spring記事人気No5
Flask
Flaskアプリの環境変数をクラウドで安全に設定する方法!初心者のための完全ガイド
No.6
Java&Spring記事人気No6
Python
Pythonのインストール方法まとめ!Windows・Mac・Linux別にステップ解説
No.7
Java&Spring記事人気No7
Python
Pythonで仮想環境(venv)を作る方法!初心者向けに環境構築をステップ解説
No.8
Java&Spring記事人気No8
Flask
Flaskでクラウド上のメッセージキュー(SQS/PubSub)を扱う完全ガイド!初心者向け解説