Django 中带有排除项的自定义中间件
Custom Middleware in Django with Exclusions
我要求在执行某些视图时通过令牌检查身份验证,而某些视图无需身份验证即可访问。
那么,我如何制作一个中间件并从中排除一些观点。
任何其他解决此问题的想法都表示赞赏。
我建议从 Django 提供的csrf middleware中汲取灵感
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
我要求在执行某些视图时通过令牌检查身份验证,而某些视图无需身份验证即可访问。 那么,我如何制作一个中间件并从中排除一些观点。 任何其他解决此问题的想法都表示赞赏。
我建议从 Django 提供的csrf middleware中汲取灵感
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