ユーザーローダーとUserMixin
LoginManagerとユーザーモデルを設定します
「ユーザーローダーとUserMixin」はCoddyKit上の無料Flask Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFlask Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Flask Academyコースには全4レッスンが含まれています。
Flask-Loginを使う
Flask-Login拡張機能は、ログイン中のユーザーを管理します。リクエストをまたいで現在のユーザーを追跡するため、セッションを手作業で接続する必要はありません。
pip install flask-loginLoginManagerを作成する
すべては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フィードバックを取得できます。ローカル設定は不要です。