2016-07-05 143 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表中運行查詢來檢查它是否爲客戶。