API-1:自定义权限认证

中间件:

其实就是一个类,在请求到来和结束后,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')

你可能感兴趣的:(API-1:自定义权限认证)