0Pricing
Flask Academy · レッスン

login_requiredでビューを保護する

ルートへのアクセスを制限し、匿名ユーザーをリダイレクトします

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

保護が必要なページもあります

ダッシュボードや設定ページを、未ログインの訪問者に表示してはいけません。そのようなルートを保護し、ログイン済みのユーザーだけがアクセスできるようにします。

login_requiredデコレーター

Flask-Loginには、1行で使えるゲート機能があります。それがlogin_requiredデコレーターです。ビューに付けると、匿名ユーザーはアクセスを拒否されます。

from flask_login import login_required

ルートに適用する

login_requiredをルートデコレーターのすぐ下に配置します。順序が重要で、Flaskが実際に呼び出すビューを認証チェックでラップする必要があります。

@app.route("/dashboard")
@login_required
def dashboard():
    return "Welcome back"

未ログインのユーザーに起きること

匿名ユーザーが保護されたルートにアクセスすると、Flask-Loginはページを表示しません。代わりにログインビューへリダイレクトします。

ログインページの場所を伝える

リダイレクトを機能させるには、マネージャーにlogin_viewを設定します。ログインルートのエンドポイント名を指定すると、リダイレクト先が分かります。

login_manager.login_view = "login"

nextパラメーター

Flask-LoginはログインURLにnextクエリパラメーターを追加します。リダイレクト前にユーザーが移動しようとしていた場所を記録するためです。

ログイン後に元のページへ戻す

ログインビューでrequest.args.getを使ってnextを読み取り、ログインに成功したらその場所へリダイレクトします。ユーザーは最初に開こうとしたページへ戻れます。

dest = request.args.get("next") or url_for("index")
return redirect(dest)

メッセージをカスタマイズする

login_messageを設定すると、アクセスが拒否されたときに表示するフラッシュメッセージを変更できます。分かりにくい無言のリダイレクトより、親切なメッセージの方がよいでしょう。

login_manager.login_message = "Please log in first."

内部でcurrent_userを使う

保護されたビュー内では、current_userが実在する認証済みユーザーだと信頼できます。デコレーターがすでに確認しているため、再確認する必要はありません。

@login_required
def profile():
    return current_user.email

複数のルートを保護する

管理者用エリア全体を保護するには、各ビューにlogin_requiredを適用するか、blueprintのbefore_requestに設定してすべてのルートを対象にします。

ログイン済みかどうかを超えて

login_requiredが確認するのは、誰かが認証済みかどうかだけです。管理者限定のようなロール確認には、ビュー内で独自のロジックを追加します。

確認してみましょう

匿名の訪問者がlogin_requiredの付いたルートを開きました。Flask-Loginはどうするでしょうか。

まとめ

login_requiredでルートを保護し、リダイレクト用にlogin_viewを設定し、nextを使ってユーザーを元の場所へ戻せるようにしました。保護されたページは安全に守られています。🛡️

よくある質問

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

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

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

ルートへのアクセスを制限し、匿名ユーザーをリダイレクトします ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

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

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

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

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

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

  1. パスワードはハッシュ化し、平文では保存しない
  2. ユーザーローダーとUserMixin
  3. login_user、logout_user、セッション
  4. login_requiredでビューを保護する
← Flask Academyに戻る