0
我在我的應用程序中使用Django REST框架。我需要認證,但不是默認的認證。我有一個模型:Django自定義身份驗證
class Worker(models.Model):
token = models.CharField(...)
ip = models.GenericIPAddressField(...)
created_date = models.DateTimeField(...)
last_update = models.DateTimeField(...)
工人通過我的API發送消息,查看WorkerView從Django的REST框架的APIView繼承。令牌被髮送請求中的頭:
class WorkerView(APIView):
def post(self, request):
# some not important code
我有一個認證方法:
def authenticate(request):
try:
ip = request.META.get("REMOTE_ADDR", None)
token = request.META.get("HTTP_AUTHORIZATION", None)
...
我想到了兩個解決方案:
做一個mixin類,在我的WorkerView繼承它:
class WorkerView(AuthenticationMixin, APIView) ...
從我的身份驗證方法,使一類的裝飾,並使用它像這樣:
@authenticate class WorkerView(APIView)
但在這兩種情況下,我需要傳遞的請求參數進行驗證的方法。 如何做到這一點?或者,也許有更好的解決我的問題?
因爲我需要在用登錄名/密碼登錄的用戶和使用令牌的用戶之間進行分隔。我不想mofidy /擴展用戶模型。相反,我想授權我的模型對象,而不是用戶對象。我知道,我使用自定義身份驗證。如果我想使用它,我不會問。 – hebius
我在這裏看不到問題。您可以根據需要一次使用多個身份驗證類,並且創建一個自定義身份驗證類是完成您的任務的好方法。 –