2016-07-05 148 views
1

我有一个名为Customers(username,password .. etc)的模型,还有一个名为User(username,password ...等)的模型。
我想用不同的身份验证创建两个不同的API。
一个应使用用户名,密码
进行身份验证,第二个应使用客户用户名,密码进行身份验证。
任何想法,我该如何做到这一点?
谢谢!自定义Django身份验证

回答

0

我建议您使用django.contrib.auth.user类作为您的经典认证。您可以从任一类继承或添加OneToOne关系到自己的模型如下

from django.contrib.auth.models import User 

class YourUser(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 

对于你的问题,你应该多增加一些细节,甚至你的一些代码块的其余部分。

2

我建议以下选项:

1.

我假设用户模式是您的应用程序的“真实”的用户。如果这是真的,请使用django的默认用户模型类。它将开箱即用。

对于Customer模型,使其从AbstractBaseUser继承,这将为您提供开箱即用的密码功能,您可以根据需要添加其他字段。

现在您可以创建2个不同的登录网址。 1用户的网址,用于检查用户模型,另一个用于客户模型。这避免了每个人的困惑。

如果您更喜欢单个网址,则必须提及模型类以及用户名和密码,以了解要在哪个表中验证它们。

2.

创建两个剖面模型:用户配置和CustomerProfile

每个将与Django默认的用户模型中的一对一的关系。

基本上用户可以拥有“真实”用户或客户的配置文件。

在这种情况下,当您创建任何用户时,您将检查是否要附加UserProfile或CustomerProfile。

在这种情况下,只使用一个登录URL是有意义的。从用户的登录信息中,您可以首先从User表中获取用户,然后通过在CustomerProfile表中运行查询来检查它是否为客户。