flask-login 仅在 get_id() returns self.email 时有效
flask-login only works if get_id() returns self.email
my User class 没有继承自 UserMixin,而是定义了自己的 flask-login 所需的成员和函数。
仅当我将 get_id() 设置为 return 实例电子邮件时,登录过程才有效。如果我尝试在用户名或实际 ID 上执行此操作,我不会收到错误,但我注意到我没有登录(我无法访问 url,这需要我使用 @[ 登录=22=])
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)
它只能以这种方式工作,因为 get_id()
需要匹配 login_manager.user_loader
,在我的例子中,它需要用户的电子邮件。
my User class 没有继承自 UserMixin,而是定义了自己的 flask-login 所需的成员和函数。
仅当我将 get_id() 设置为 return 实例电子邮件时,登录过程才有效。如果我尝试在用户名或实际 ID 上执行此操作,我不会收到错误,但我注意到我没有登录(我无法访问 url,这需要我使用 @[ 登录=22=])
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)
它只能以这种方式工作,因为 get_id()
需要匹配 login_manager.user_loader
,在我的例子中,它需要用户的电子邮件。