Я использую Django REST Framework в своем приложении. Мне нужна аутентификация, но не по умолчанию. У меня есть модель:Django custom authentication
class Worker(models.Model):
token = models.CharField(...)
ip = models.GenericIPAddressField(...)
created_date = models.DateTimeField(...)
last_update = models.DateTimeField(...)
работник отправляет сообщения через мой API для просмотра WorkerView, который наследуется от APIView Джанго Rest Рамочной основы. Токен отправить в заголовке запроса в:
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)
...
Я думал о два решения:
сделать класс подмешать и унаследовать его в моем WorkerView :
class WorkerView(AuthenticationMixin, APIView) ...
сделать класс декоратора из моего метода аутентификации и использовать его как это:
@authenticate class WorkerView(APIView)
Но в обоих случаях мне нужно передать запрос аргумент для аутентификации метод. Как это сделать? Или, может быть, есть лучшее решение моей проблемы?
Потому что мне нужно разделить пользователей между теми, которые регистрируются с логином/паролем и те, которые используют токен. И я не хочу использовать mofidy/extend User model. Вместо этого я хочу разрешить объекты модели, а не объекты User. Я знаю, и я использовал обычную проверку подлинности. Если я хочу использовать его, я бы не спросил. – hebius
Я не вижу здесь проблемы. Вы можете использовать столько классов проверки подлинности сразу, сколько захотите, а создание собственного класса проверки подлинности - хороший способ выполнить вашу задачу. –