【发布时间】:2016-03-03 12:23:29
【问题描述】:
我在我的应用程序中使用 Django REST Framework。我需要身份验证,但不是默认身份验证。我有一个模型:
class Worker(models.Model):
token = models.CharField(...)
ip = models.GenericIPAddressField(...)
created_date = models.DateTimeField(...)
last_update = models.DateTimeField(...)
Worker 通过我的 API 发送消息以查看继承自 Django REST Framework 的 APIView 的 WorkerView。令牌在请求的标头中发送:
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)
但在这两种情况下,我都需要将请求参数传递给身份验证方法。 怎么做?或者也许有更好的解决方案来解决我的问题?
【问题讨论】:
标签: python django django-rest-framework