使用多个表进行多用户身份验证

时间:2017-05-25 21:56:32

标签: python flask flask-wtforms flask-login multi-user

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

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

你对这个问题有什么看法吗?

1 个答案:

答案 0 :(得分:1)

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

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

示例:

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