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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- パスワードはハッシュ化し、平文では保存しない
- ユーザーローダーとUserMixin
- login_user、logout_user、セッション
- login_requiredでビューを保護する