Django使用中间键实现csrf认证详解

  

  

调用process_view方法

  

检查视图是否被@csrf_exempt(免除csrf认证)
  

  

——去请求体或cookie中获取令牌

  


  

        中间件=[   “django.middleware.security.SecurityMiddleware”,   “django.contrib.sessions.middleware.SessionMiddleware”,   “django.middleware.common.CommonMiddleware”,   “django.middleware.csrf。CsrfViewMiddleware”, #全站使用csrf认证   “django.contrib.auth.middleware.AuthenticationMiddleware”,   “django.contrib.messages.middleware.MessageMiddleware”,   “django.middleware.clickjacking.XFrameOptionsMiddleware”,   )      

如果我想让某个请求不通过csrf认证可以这样做

        从django.views.decorators.csrf进口csrf_exempt   @csrf_exempt #该函数无需认证   def用户(请求):   user_list=(“亚历克斯”,“卑劣”)   返回HttpResponse (json.dumps ((user_list)))      


  

        中间件=[   “django.middleware.security.SecurityMiddleware”,   “django.contrib.sessions.middleware.SessionMiddleware”,   “django.middleware.common.CommonMiddleware”,   #“django.middleware.csrf。CsrfViewMiddleware”, #全站不使用csrf认证   “django.contrib.auth.middleware.AuthenticationMiddleware”,   “django.contrib.messages.middleware.MessageMiddleware”,   “django.middleware.clickjacking.XFrameOptionsMiddleware”,   )      

如果我想让某个请求使用csrf认证可以这样做

        从进口csrf_exempt django.views.decorators.csrf csrf_protect   @csrf_protect #该函数需认证   def用户(请求):   user_list=(“亚历克斯”,“卑劣”)   返回HttpResponse (json.dumps ((user_list)))      


  

  

——@method_decorator (csrf_exempt)
  

  

——在派遣方法中(单独方法无效)

  

<强>方式一
  

        从进口csrf_exempt django.views.decorators.csrf csrf_protect   从django.utils.decorators进口method_decorator   类StudentsView(观点):      @method_decorator (csrf_exempt)   def调度(自我,请求,* args, * * kwargs):   返回超级(StudentsView自我)。调度(请求、* args * * kwargs)      def get(自我,请求,* args, * * kwargs):   打印(“方法”)   返回HttpResponse(得到)      def post(自我,请求,* args, * * kwargs):   返回HttpResponse(“文章”)      def put(自我,请求,* args, * * kwargs):   返回HttpResponse(把)      def删除(自我,请求,* args, * * kwargs):   返回HttpResponse(“删除”)      

<强>方式二
  

        从进口csrf_exempt django.views.decorators.csrf csrf_protect   从django.utils.decorators进口method_decorator      @method_decorator (csrf_exempt name='发送')   类StudentsView(观点):      def get(自我,请求,* args, * * kwargs):   打印(“方法”)   返回HttpResponse(得到)      def post(自我,请求,* args, * * kwargs):   返回HttpResponse(“文章”)      def put(自我,请求,* args, * * kwargs):   返回HttpResponse(把)      def删除(自我,请求,* args, * * kwargs):   返回HttpResponse(“删除”)      


  

  
      <李>——本质,基于反射来实现李   <李>——流程:路由,看来,调度(反)射李   <李>——取消csrf认证(装饰器要加到派遣方法上且method_decorator装饰)   
  


  

  
      <李>——csrf   
        <李>——基于中间件的process_view方法   <李>——装饰器给单独函数进行设置(认证或无需认证)   
      李   
  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

Django使用中间键实现csrf认证详解