在Flask中,UserMixin是什么?

22
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的目的。有人可以简要描述一下吗?


2
你有阅读文档吗? - noslenkwah
3
是的,但是我不能很好地理解它。 - Sandip Swain
1个回答

47

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

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

UserMixin 类提供了这些属性的实现。这意味着你可以调用例如 is_authenticated 来检查登录凭证是否正确,而不必自己编写方法来完成这个过程。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接