У меня есть 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