flask-login仅在get_id()返回self.email时有效

时间:2016-01-22 16:13:35

标签: python flask sqlalchemy flask-sqlalchemy flask-login

我的User类不继承自UserMixin,而是定义了自己的成员和函数,这是烧瓶登录所必需的。

登录过程仅在我设置get_id()以返回实例电子邮件时才有效。如果我试图在用户的名字或实际身份证上这样做我没有收到错误但我注意到我没有登录(我无法访问要求我使用@required_login登录的URL)

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)

1 个答案:

答案 0 :(得分:5)

它只能以这种方式工作,因为get_id()需要匹配login_manager.user_loader,在我的情况下,我需要用户的电子邮件。