zoukankan      html  css  js  c++  java
  • Django csrf

     Django的CSRF认证是在process_view的时候认证的,它做了两件事

      1. 检查视图是否被@csrf_exempt函数装饰器装饰

      2. 去请求体或者cookie中获取token,进行校验

    关于@csrf_exempt

      1. 如果视图被此装饰器装饰,那么该视图就不会进行csrf验证。

      2. @csrf_protect装饰器与其相反, 如果被@csrf_protect装饰,则必须进行csrf认证

      3. 不能直接用于类视图。 类视图使用方法:在类视图前加@method_decorator(csrf_exempt, name='dispatch'),或者重写dispatch方法,并为其加上@method_decorator(csrf_exempt)

    from django.shortcuts import render, HttpResponse
    from django.utils.decorators import method_decorator
    from django.views import View
    from django.views.decorators.csrf import csrf_exempt
    
    
    class MyBaseView(object):
        def dispatch(self, request, *args, **kwargs):
            print('before')
            ret = super(MyBaseView, self).dispatch(request, *args, **kwargs)
            print('after')
            return ret
    
    
    @method_decorator(csrf_exempt, 'dispatch')  # 本类视图不校验csrf
    class StudentsView(MyBaseView, View):
        def get(self, request, *args, **kwargs):
            return HttpResponse('GET')
    
        def post(self, request, *args, **kwargs):
            return HttpResponse('POST')
    
        def delete(self, request, *args, **kwargs):
            return HttpResponse('DELETE')
    
        def put(self, request, *args, **kwargs):
            return HttpResponse('PUT')
  • 相关阅读:
    Paperfolding HDU
    I
    2020年8月11日第一次组队训练
    2018ICPC南京I. Magic Potion
    【贪心】纪念品分组
    【贪心】删数问题
    【排序】排名
    小X与队列
    B.T.B.F.
    2018浙江理工大学迎新赛——决赛
  • 原文地址:https://www.cnblogs.com/JackShi/p/12993088.html
Copyright © 2011-2022 走看看