Flask Academy · レッスン

login_user、logout_user、セッション

セッションへのユーザーのログインとログアウトを行います

レッスン 3/413 ステップ

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

ユーザーをログインさせる

パスワードの確認に成功したら、login_userを呼び出して、ユーザーがログインしたことをFlask-Loginに伝えます。この1回の呼び出しで、セッションが設定されます。

from flask_login import login_user
login_user(user)

一般的なログインルート

ログインビューではユーザーを検索し、パスワードを検証してからlogin_userを呼び出します。その後、ダッシュボードのような実際のページにリダイレクトします。

if user and user.check_password(pw):
    login_user(user)
    return redirect(url_for("dashboard"))

login_userが保存するもの

login_userはオブジェクト全体を保存しません。ユーザーのidをセッションCookieに書き込み、後でuser_loaderがユーザーを復元します。

ログイン状態を保持する

ブラウザーを閉じた後もログイン状態を維持するには、remember=Trueを渡します。Flask-Loginはセッション専用のCookieではなく、長期間有効なCookieを設定します。

login_user(user, remember=True)

current_userにアクセスする

ビュー内のどこからでもcurrent_userを読み取り、ログイン中のユーザーを取得できます。これは、現在のリクエストのユーザーを常に指すプロキシです。

from flask_login import current_user
name = current_user.username

匿名ユーザー

誰もログインしていない場合、current_userは匿名ユーザーオブジェクトになります。そのis_authenticatedはFalseなので、安全に条件分岐できます。

if current_user.is_authenticated:
    show_dashboard()

ログアウトする

ユーザーをログアウトさせるには、logout_userを呼び出します。セッションからユーザーIDが削除され、次のリクエストでは再び匿名ユーザーとして扱われます。

from flask_login import logout_user
logout_user()

ログアウトルート

ログアウトビューは簡単です。logout_userを呼び出してからホームへリダイレクトします。確認するパスワードはなく、セッションを消去するだけです。

@app.route("/logout")
def logout():
    logout_user()
    return redirect(url_for("index"))

Secret Keyが必要です

セッションは署名付きCookieに保存されるため、アプリにはSECRET_KEYが必要です。これがないとlogin_userがエラーを発生させ、何も動作しません。

app.config["SECRET_KEY"] = "a-long-random-value"

セッションはユーザーごとに分かれます

ブラウザーごとに独自の署名付きcookieが使われるため、2人のユーザーが互いのセッションを見ることはありません。Flask-Loginがセッションを明確に分離します。

ユーザーにあいさつする

Flask-Loginがcurrent_userを注入するため、テンプレートでもcurrent_userを使用できます。これにより、個人向けのナビゲーションバーも1行で作成できます。

<p>Hello, {{ current_user.username }}</p>

確認してみましょう

ユーザーが「ログアウト」をクリックしました。セッションを終了する呼び出しはどれでしょうか。

まとめ

パスワードを確認した後にlogin_userを呼び出し、どこからでもcurrent_userを読み取り、logout_userでセッションを終了できるようになりました。SECRET_KEYがこれらを結び付けます。🔑

無料で開始

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

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

コース
30
レッスン
120

よくある質問

「login_user、logout_user、セッション」レッスンは無料ですか?

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

「login_user、logout_user、セッション」で何を学びますか?

セッションへのユーザーのログインとログアウトを行います ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「login_user、logout_user、セッション」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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