Пользовательское промежуточное ПО в Django с исключениями - PullRequest
0 голосов
/ 23 мая 2018

Мне требуется проверять аутентификацию с помощью токена во время выполнения определенных представлений, в то время как некоторые представления могут быть доступны без аутентификации.Итак, как мне сделать промежуточное ПО и исключить из него некоторые представления.Любая другая идея для решения этой проблемы приветствуется.

1 Ответ

0 голосов
/ 23 мая 2018

Я бы посоветовал черпать вдохновение из промежуточного программного обеспечения csrf , которое Django предоставляет

from django.utils.deprecation import MiddlewareMixin

class MyAuthenticationMiddleware(MiddlewareMixin):

    def process_view(self, request, callback, callback_args, callback_kwargs):

        if getattr(callback, 'my_exempt_flag', False):
            return None

        # Authentication goes here
        # Return None if authentication was successful
        # Return a HttpResponse with some error status if not successful

, и создать декоратор для упаковки ваших представлений

from functools import wraps

def exempt_from_my_authentication_middleware(view_func):
    def wrapped_view(*args, **kwargs):
        return view_func(*args, **kwargs)
    wrapped_view.my_exempt_flag = True
    return wraps(view_func)(wrapped_view)

Может использоватьсявот так

@exempt_from_my_authentication_middleware
def my_view(request):
    # TODO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...