美文网首页
API-1:自定义权限认证

API-1:自定义权限认证

作者: Farewell_lpf | 来源:发表于2018-05-23 16:10 被阅读0次

    中间件:

    其实就是一个类,在请求到来和结束后,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:自定义权限认证

          本文链接:https://www.haomeiwen.com/subject/deirjftx.html