4
我的User类不是从UserMixin继承的,而是定义了它自己的成员和用于flask-login所必需的函数。只有当get_id()返回self.email时,flask-login才能工作.email
只有当我设置get_id()返回实例电子邮件时,登录过程才有效。如果我试图对用户的名称或实际的ID做到这一点,我没有得到一个错误,但我注意到我没有登录(我无法访问URL,需要我使用@required_login登录)
class User(db.Model):
id = db.Column(db.Integer,primary_key=True)
email = db.Column(db.Unicode(128))
name = db.Column(db.Unicode(128))
password = db.Column(db.Unicode(1024))
authenticated = db.Column(db.Boolean, default=False)
posts = db.relationship('Post')
#-----login requirements-----
def is_active(self):
# all users are active
return True
def get_id(self):
# returns the user e-mail
return unicode(self.email)
def is_authenticated(self):
return self.authenticated
def is_anonymous(self):
# False as we do not support annonymity
return False
编辑:当时问的问题我不明白get_id()需要与load_user()
@login_manager.user_loader
def load_user(email):
return User.get_user(email)
发布您的用户加载程序也? – Busturdust
'is_authenticated'应该表明用户是否已经登录。您将它视为一个像“is_active”这样独立的标志。你对'is_anonymous'有一个类似的误解:所有真实用户都被认证,这是为了表示一个代表未登录用户的对象。另外,'is_authenticated'和'is_anonymous'预计会被'@ property'装饰。 – davidism
请[edit]包含[mcve]。 – davidism