中间件:
其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法。
在setting.py模块中,有一个MIDDLEWARE_CLASSES变量,其中每个元素就是一个中间件。
中间件可以定义5个方法:
process_request(self,request) process_view(self,request,callback,callback_args,callback_kwargs)
process_template_response(self,request,reponse)
process_exception(self,request,response)
process_response(self,request,response)
详细解释:https://blog.csdn.net/shentong1/article/details/78829599
csrf原理
实现防止跨站请求伪造的功能,通过中间件django.middleware.csrf.CsrfViewMiddleware来完成。
设置防跨站请求伪造功能分为全局和局部:
全局:
中间件django.middleware.csrf.CsrfViewMiddleware
局部:
@csrf_protect,为当前函数强制设置防跨站请求伪造功能,即便 settings中没有设置全局中间件。
@csrf_exempt,取消当前防跨站请求伪造功能,即便settings中
设置全局中间件。
请求声明周期
wsgi->中间件->路由系统->视图函数(OMR,Template,xuanr)
class MyAuthentication(object):
def authenticate(self, request):
token = request._request.GET.get('token')
if not token:
raise exceptions.AuthenticationFailed('认证失败')
return('alex',None)
def authenticate_header(self,val):
pass
class OneView(APIView):
authentication_classes = [MyAuthentication,]
def get(self,request,*args,**kwargs):
return HttpResponse('得到')
def post(self,request,*args,**kwargs):
return HttpResponse('add')
网友评论