Flask 中的 UserMixin 是啥?

Posted

技术标签:

【中文标题】Flask 中的 UserMixin 是啥?【英文标题】:What is the UserMixin in Flask?Flask 中的 UserMixin 是什么? 【发布时间】:2020-11-23 14:55:39 【问题描述】:
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)

看了the official documentation之后,我还不能理解UserMixin的目的。谁能简单介绍一下?

【问题讨论】:

你读过docs吗? 是的,但不能很好理解 【参考方案1】:

Flask-login 需要具有以下属性的 User 模型:

有一个 is_authenticated() 方法,如果用户提供了有效的凭据,则返回 True 有一个 is_active() 方法,如果用户的帐户处于活动状态,则返回 True 有一个 is_anonymous() 方法,如果当前用户是匿名用户,则返回 True 有一个 get_id() 方法,给定一个 User 实例,返回该对象的唯一 ID

UserMixin 类提供了这个属性的实现。这就是您可以调用例如is_authenticated 来检查登录凭据提供是否正确的原因,而不必自己编写方法来执行此操作。

【讨论】:

以上是关于Flask 中的 UserMixin 是啥?的主要内容,如果未能解决你的问题,请参考以下文章

flask-login的简单实用

Flask 中的“端点”是啥?

Flask 框架中的线程本地是啥意思? [复制]

ms-identity-python-flask-webapp-call-graph - identity_context_data 中的各种属性或方法是啥

Sqlalchemy - 一对多用户到位

flask-用户资料