Flask-loginには実際にはユーザーバックエンドはなく、ユーザーのログインとログアウトを支援するセッション機構を処理するだけです。ユーザーを表すものを(メソッドを装飾することによって)伝える必要があります。また、ユーザーが「アクティブ」であるかどうかを知る方法もあなた次第です(「アクティブ」であると、アプリケーションごとに異なる意味を持つ可能性があるため) 。
ドキュメント を読む必要があります 何をするのか、何をしないのかを確認してください 。ここでは、dbバックエンドとの配線にのみ集中します。
まず、ユーザーオブジェクトを定義します。これは、ユーザーのプロパティを表します。このオブジェクトは、データベースやLDAPなどにクエリを実行でき、ログインメカニズムをデータベースバックエンドに接続するフックです。
ログイン例 を使用します この目的のためのスクリプト。
class User(UserMixin):
def __init__(self, name, id, active=True):
self.name = name
self.id = id
self.active = active
def is_active(self):
# Here you should write whatever the code is
# that checks the database if your user is active
return self.active
def is_anonymous(self):
return False
def is_authenticated(self):
return True
ユーザーオブジェクトを作成したら、ユーザーを読み込むメソッドを作成する必要があります(基本的に、User
のインスタンスを作成します)。 上からのクラス)。このメソッドはユーザーIDで呼び出されます。
@login_manager.user_loader
def load_user(id):
# 1. Fetch against the database a user by `id`
# 2. Create a new object of `User` class and return it.
u = DBUsers.query.get(id)
return User(u.name,u.id,u.active)
これらの手順を実行すると、ログイン方法は次のようになります。
-
ユーザー名とパスワードが(データベースに対して)一致するかどうかを確認します。このコードは自分で作成する必要があります。
-
認証が成功した場合は、ユーザーのインスタンスを
login_user()
に渡す必要があります