Python Django自定义身份验证
我正在我的应用程序中使用Django REST框架。我需要身份验证,但不是默认身份验证。我有一个模型:Python Django自定义身份验证,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正在我的应用程序中使用Django REST框架。我需要身份验证,但不是默认身份验证。我有一个模型: class Worker(models.Model): token = models.CharField(...) ip = models.GenericIPAddressField(...) created_date = models.DateTimeField(...) last_update = models.DateTimeField(...) Wor
class Worker(models.Model):
token = models.CharField(...)
ip = models.GenericIPAddressField(...)
created_date = models.DateTimeField(...)
last_update = models.DateTimeField(...)
Worker通过MyAPI发送消息以查看WorkerView,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)
...
我考虑了两种解决方案:
class WorkerView(AuthenticationMixin, APIView)
...
@authenticate
class WorkerView(APIView)
怎么做?或者可能有更好的解决方案来解决我的问题?为什么不按照这里的定义创建一个自定义身份验证类?
因为我需要将使用登录/密码登录的用户和使用令牌登录的用户分开。我不想破坏/扩展用户模型。相反,我想授权我的模型对象,而不是用户对象。我知道,我使用了自定义身份验证。如果我想用的话,我不会问。我看这里没有问题。您可以一次使用任意多个身份验证类,创建自定义身份验证类是完成任务的好方法。