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')
  • 相关阅读:
    JavaScript的正则表达式的基础
    运用JS判断代码可以参考学习
    调用百度地图代码
    运用了css,js
    中国地图(Highmaps)
    Centos
    代理模式【 动态代理与静态代理】
    java集合 collection-list-LinkedList 模拟一个堆栈或者队列数据结构。
    java集合 collection-list-LinkedList
    java集合 collection-list-vector
  • 原文地址:https://www.cnblogs.com/JackShi/p/12993088.html
Copyright © 2011-2022 走看看