具有多个 table 的烧瓶多用户身份验证

flask multi user authentication with multiple table

我需要你的帮助, 我的模型文件中有 3 个表,包含 3 种不同类型的用户(管理员、客户、公司),每个用户都可以有一个电子邮件和密码进行身份验证。问题是,当用户在 2 个表中创建计数时,比如客户和公司,使用相同的电子邮件,程序会混淆计数并给出错误:

 - class Admin(UserMixin, db.Model):   
 - class Client(UserMixin, db.Model): 
 - class Company(UserMixin, db.Model):

你知道这个问题吗?

好的,这是您数据库的设计缺陷。不同类型的用户不应该存放在不同的地方。

您需要定义一个模型,其中在数据库中定义了用户类型。然后,您可以在模型中创建方法 class 来评估用户 class 并决定如何对待它。

示例:

class User(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    username = db.Column(db.String(200), unique = True)
    password = db.Column(db.String(200))
    userType = db.Column(db.String(20), default = 'user') #can be user, client, admin or whatever your options are

    def isAdmin(self): #an example method - your admin view could use this method to check if a user should be given access
         if self.userType == 'admin':
             return True
         else:
             return False