Flask Academy · レッスン

ユーザーローダーとUserMixin

LoginManagerとユーザーモデルを設定します

レッスン 2/413 ステップ

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

Flask-Loginを使う

Flask-Login拡張機能は、ログイン中のユーザーを管理します。リクエストをまたいで現在のユーザーを追跡するため、セッションを手作業で接続する必要はありません。

pip install flask-login

LoginManagerを作成する

すべてはLoginManagerから始まります。インスタンスを1つ作成してアプリに接続すると、Flask-Loginがリクエストを処理できるようになります。

from flask_login import LoginManager
login_manager = LoginManager()
login_manager.init_app(app)

必要なものは2つです

動作させるには、マネージャーのルールに従うユーザーモデルと、IDからユーザーを読み込む関数が必要です。ここではその両方を設定します。

UserMixinによるショートカット

モデルには、is_authenticatedなどのいくつかのプロパティを用意する必要があります。UserMixinクラスがすべて提供してくれるため、これを継承するだけで済みます。

from flask_login import UserMixin
class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)

UserMixinが提供するもの

UserMixinはis_authenticated、is_active、is_anonymous、get_idを自動的に追加します。最後のget_idは、ユーザーIDを文字列として返します。

user_loaderコールバック

Flask-LoginはセッションにユーザーIDだけを保存します。各リクエストでuser_loaderを呼び出し、そのIDを実際のユーザーに戻します。

ローダーを登録する

login_manager.user_loaderで関数をデコレートします。この関数はセッションからIDを受け取り、ユーザーオブジェクトまたはNoneを返す必要があります。

@login_manager.user_loader
def load_user(user_id):
    return User.query.get(int(user_id))

IDは文字列で渡される

ローダーに渡されるIDは、Cookieから取得されるため常に文字列です。整数型の主キーを検索する前に、intに変換してください。

return User.query.get(int(user_id))

不明なIDにはNoneを返す

IDに一致する行がない場合、ローダーはNoneを返す必要があります。するとFlask-Loginは、そのリクエストを匿名の訪問者からのものとして扱います。

必要に応じてget_idをオーバーライドする

主キーの名前がidではない場合は、get_idをオーバーライドして正しい値を返すようにします。通常のid列を使うアプリでは、ほとんどの場合変更する必要はありません。

def get_id(self):
    return str(self.uuid)

各要素がつながりました

マネージャー、UserMixinモデル、user_loaderを用意すると、Flask-Loginは受信するすべてのリクエストで現在のユーザーを識別できるようになります。

確認してみましょう

リクエスト間で、セッションに実際に何が保存されているか考えてみてください。

まとめ

LoginManagerを接続し、モデルにUserMixinを組み込み、user_loaderを作成しました。これでFlask-Loginはセッションから現在のユーザーを復元できます。👤

無料で開始

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

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

コース
30
レッスン
120

よくある質問

「ユーザーローダーとUserMixin」レッスンは無料ですか?

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

「ユーザーローダーとUserMixin」で何を学びますか?

LoginManagerとユーザーモデルを設定します ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「ユーザーローダーとUserMixin」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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