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')
  • 相关阅读:
    Django之admin
    Django之CSRF(跨站请求伪造)
    Django之Cookie
    Django之Session
    Django|第一部
    简单的udp消息收发
    .net core里使用ado.net访问sqlserver数据库
    CentOS8中安装SQLServer
    CentOS里配置.net core运行环境(含后台运行,附ssh长连接)
    发布"dotNet core"到CentOS8
  • 原文地址:https://www.cnblogs.com/JackShi/p/12993088.html
Copyright © 2011-2022 走看看