Django Rest Framework OAuth2 разделяет пользователей на приложения - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть 2 приложения, и я хочу авторизовать 2 типа учетных записей, разделенных приложением. Я написал специальное промежуточное программное обеспечение для проверки учетных записей и создания для них токенов. В следующих кодах я извлекаю значения авторизации http и проверяю разрешение вручную. Это работаетнет никаких проблем. Но я могу улучшить этот метод. Есть ли другой лучший способ для этого?

import base64
from django.utils.deprecation import MiddlewareMixin
from oauth2_provider.models import Application
from django.shortcuts import get_object_or_404
from django.contrib.auth.models import User
from django.http import HttpResponse


class MyAuthMiddleware(MiddlewareMixin):
    def process_request(self, request):
        if request.path == '/o/token/':
            decoded_header = base64.b64decode(request.META.get(
                'HTTP_AUTHORIZATION', '').split(' ')[1])
            client_id = decoded_header.decode('utf-8').split(':')[0]
            username = request.POST.get('username', '')

            user = get_object_or_404(User, username=username)
            app = get_object_or_404(Application, client_id=client_id)

            if app.name == 'PcSlicer' and not user.is_staff:
                return HttpResponse('unauthorized', status=404)

            return None
...