1. ホーム
  2. python

[解決済み] FlaskのUserMixinとは何ですか?

2022-02-26 13:57:17

質問

from datetime import datetime
from werkzeug.security import generate_password_hash
from werkzeug.security import check_password_hash
from flask_login import UserMixin
from app import db


class User(UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(64), index=True, unique=True)
    password_hash = db.Column(db.String(64))
    posts = db.relationship('Post', backref='author', lazy='dynamic')

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    def __repr__(self):
        return '<User{}>'.format(self.username)


読了後 公式ドキュメント の目的がまだ理解できていませんでした。 UserMixin . どなたか簡単に説明していただけませんか?

解決方法は?

Flask-loginは、以下のプロパティを持つUserモデルを必要とします。

  • ユーザーが有効な証明書を提供した場合に True を返す is_authenticated() メソッドを持つ。
  • is_active() メソッドを実装しており、 ユーザーのアカウントが有効な場合に True を返します。
  • is_anonymous()メソッドがあり、現在のユーザが匿名ユーザの場合にTrueを返します。
  • は、User インスタンスを指定すると、そのオブジェクトの一意の ID を返す get_id() メソッドを備えています。

UserMixinクラスは、このプロパティの実装を提供します。そのため、例えば is_authenticated を使用すると、ログイン情報が正しいかどうかをチェックするためのメソッドを自分で書く必要がなくなります。