Flask 中的 UserMixin 是什么?
What is the UserMixin in Flask?
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
的目的。谁能简单描述一下?
Flask-login 需要具有以下属性的用户模型:
- 有一个 is_authenticated() 方法 returns 如果用户提供了有效的凭据则为真
- 有一个 is_active() 方法 returns 如果用户的帐户处于活动状态则为真
- 有一个 is_anonymous() 方法 returns 如果当前用户是匿名用户则为真
- 有一个 get_id() 方法,给定一个 User 实例,returns 该对象的唯一 ID
UserMixin class 提供此属性的实现。这就是为什么您可以调用 is_authenticated
来检查提供的登录凭据是否正确,而不必自己编写方法来执行此操作的原因。
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
的目的。谁能简单描述一下?
Flask-login 需要具有以下属性的用户模型:
- 有一个 is_authenticated() 方法 returns 如果用户提供了有效的凭据则为真
- 有一个 is_active() 方法 returns 如果用户的帐户处于活动状态则为真
- 有一个 is_anonymous() 方法 returns 如果当前用户是匿名用户则为真
- 有一个 get_id() 方法,给定一个 User 实例,returns 该对象的唯一 ID
UserMixin class 提供此属性的实现。这就是为什么您可以调用 is_authenticated
来检查提供的登录凭据是否正确,而不必自己编写方法来执行此操作的原因。