Django Academy · レッスン

login_requiredとビューの保護

認証済みユーザーだけにページを制限します

レッスン 4/413 ステップ

「login_requiredとビューの保護」はCoddyKit上の無料Django Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDjango Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Django Academyコースには全4レッスンが含まれています。

非公開にすべきページもある

ダッシュボードやプロフィールページは、ログイン済みのユーザーだけが開けるようにするべきです。Djangoなら、こうしたビューの保護を簡単かつ一貫した方法で実現できます。🚧

login_requiredを使う

login_requiredデコレーターはビューを保護します。匿名の訪問者は自動的にログインページへリダイレクトされます。

from django.contrib.auth.decorators import login_required

ビューをデコレートする

ビュー関数のすぐ上に@login_requiredを記述します。この1行だけでページを保護できます。

@login_required
def dashboard(request):
    return render(request, "dashboard.html")

訪問者の移動先

アクセスが拒否されると、DjangoはLOGIN_URLに設定されたURLへリダイレクトします。settingsで設定して、ログインページに移動するようにしましょう。

LOGIN_URL = "/accounts/login/"

nextパラメーター

リダイレクトには元のURLを含むnextクエリ値が追加されるため、ログイン後にユーザーを元々表示しようとしていたページへ戻せます。🎯

クラスベースビューを保護する

クラスベースビューでは、デコレーターの代わりにLoginRequiredMixinを使います。基底クラスのリストでは最初に指定してください。

from django.contrib.auth.mixins import LoginRequiredMixin

Mixinの配置が重要

クラス定義ではLoginRequiredMixinを汎用ビューより前に指定する必要があります。そうしないと保護が適用されません。

class Dashboard(LoginRequiredMixin, TemplateView):
    template_name = "dashboard.html"

ビュー内で確認する

手動で制御したい場合もあります。デコレーターを使わず、request.user.is_authenticatedを読み取って自分で処理を分岐させます。

if not request.user.is_authenticated:
    return redirect("login")

権限でさらに制限する

単なるログインではなく特定の権限を要求するには、permission_requiredを使います。指定した権限をユーザーが持っているか確認できます。

from django.contrib.auth.decorators import permission_required

テンプレートでリンクを隠す

テンプレートでは非公開リンクをuser.is_authenticatedで囲み、ゲストに利用できないボタンを見せないようにします。

多層防御

リンクを隠すだけでは本当のセキュリティにはなりません。ユーザーはURLを直接入力できるため、必ずview自体も保護してください。

確認問題

login_requiredが匿名ユーザーを送る先を決める設定はどれですか。

まとめ:ビューの保護

login_requiredとLoginRequiredMixinでページを保護し、LOGIN_URLを設定しました。リンクを隠すだけでなく、ビュー自体を保護する方法も学びました。✅

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「login_requiredとビューの保護」レッスンは無料ですか?

はい。「login_requiredとビューの保護」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Django Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Django Academyコースには全4レッスンが含まれています。

「login_requiredとビューの保護」で何を学びますか?

認証済みユーザーだけにページを制限します ブラウザで直接実行するハンズオンコードでDjango Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Django Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDjango Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「login_requiredとビューの保護」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDjango Academyレッスンでコードを書いて実行できますか?

はい。すべてのDjango Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Userモデルとauthenticate()
  2. login、logout、Auth Views
  3. UserCreationFormによる登録
  4. login_requiredとビューの保護
← Django Academyに戻る