最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django使用中間鍵實(shí)現(xiàn)csrf認(rèn)證詳解

 更新時(shí)間:2019年07月22日 09:41:02   作者:Crazymagic  
這篇文章主要介紹了Django使用中間鍵實(shí)現(xiàn)csrf認(rèn)證詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

Django中的csrf認(rèn)證實(shí)現(xiàn)的原理

調(diào)用 process_view 方法

檢查視圖是否被 @csrf_exempt (免除csrf認(rèn)證)

- 去請(qǐng)求體或cookie中獲取token

情況一(全站使用csrf認(rèn)證,局部不想使用csrf認(rèn)證)

MIDDLEWARE = [
            'django.middleware.security.SecurityMiddleware',
            'django.contrib.sessions.middleware.SessionMiddleware',
            'django.middleware.common.CommonMiddleware',
            'django.middleware.csrf.CsrfViewMiddleware', # 全站使用csrf認(rèn)證
            'django.contrib.auth.middleware.AuthenticationMiddleware',
            'django.contrib.messages.middleware.MessageMiddleware',
            'django.middleware.clickjacking.XFrameOptionsMiddleware',
          ]

如果我想讓某個(gè)請(qǐng)求不通過csrf認(rèn)證可以這樣做

from django.views.decorators.csrf import csrf_exempt
@csrf_exempt # 該函數(shù)無需認(rèn)證
def users(request):
  user_list = ['alex','oldboy']
  return HttpResponse(json.dumps((user_list)))

情況二(全站不使用csrf認(rèn)證,局部想使用csrf認(rèn)證)

MIDDLEWARE = [
  'django.middleware.security.SecurityMiddleware',
  'django.contrib.sessions.middleware.SessionMiddleware',
  'django.middleware.common.CommonMiddleware',
  #'django.middleware.csrf.CsrfViewMiddleware', # 全站不使用csrf認(rèn)證
  'django.contrib.auth.middleware.AuthenticationMiddleware',
  'django.contrib.messages.middleware.MessageMiddleware',
  'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

如果我想讓某個(gè)請(qǐng)求使用csrf認(rèn)證可以這樣做

from django.views.decorators.csrf import csrf_exempt,csrf_protect
@csrf_protect # 該函數(shù)需認(rèn)證
def users(request):
  user_list = ['alex','oldboy']
  return HttpResponse(json.dumps((user_list)))

CBV小知識(shí),csrf時(shí)需要使用

- @method_decorator(csrf_exempt)

- 在dispatch方法中(單獨(dú)方法無效)

方式一

from django.views.decorators.csrf import csrf_exempt,csrf_protect
from django.utils.decorators import method_decorator
class StudentsView(View):
  
  @method_decorator(csrf_exempt)
  def dispatch(self, request, *args, **kwargs):
    return super(StudentsView,self).dispatch(request, *args, **kwargs)

  def get(self,request,*args,**kwargs):
    print('get方法')
    return HttpResponse('GET')

  def post(self, request, *args, **kwargs):
    return HttpResponse('POST')

  def put(self, request, *args, **kwargs):
    return HttpResponse('PUT')

  def delete(self, request, *args, **kwargs):
    return HttpResponse('DELETE')

方式二

from django.views.decorators.csrf import csrf_exempt,csrf_protect
from django.utils.decorators import method_decorator

@method_decorator(csrf_exempt,name='dispatch')
class StudentsView(View):

  def get(self,request,*args,**kwargs):
    print('get方法')
    return HttpResponse('GET')

  def post(self, request, *args, **kwargs):
    return HttpResponse('POST')

  def put(self, request, *args, **kwargs):
    return HttpResponse('PUT')

  def delete(self, request, *args, **kwargs):
    return HttpResponse('DELETE')

總結(jié):

  • - 本質(zhì),基于反射來實(shí)現(xiàn)
  • - 流程:路由,view,dispatch(反射)
  • - 取消csrf認(rèn)證(裝飾器要加到dispatch方法上且method_decorator裝飾)

擴(kuò)展:

  • - csrf
    • - 基于中間件的process_view方法
    • - 裝飾器給單獨(dú)函數(shù)進(jìn)行設(shè)置(認(rèn)證或無需認(rèn)證)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python Json讀寫操作之JsonPath用法詳解

    Python Json讀寫操作之JsonPath用法詳解

    JSONPath是一種信息抽取類庫,是從JSON文檔中抽取指定信息的工具,提供多種語言實(shí)現(xiàn)版本,包括Javascript、Python、PHP和Java,這篇文章主要介紹了Python Json讀寫操作之JsonPath用法詳解,需要的朋友可以參考下
    2023-04-04
  • python進(jìn)階教程之文本文件的讀取和寫入

    python進(jìn)階教程之文本文件的讀取和寫入

    這篇文章主要介紹了python進(jìn)階教程之文本文件的讀取和寫入,本文講解的是最基本的文件讀取和寫入功能,需要的朋友可以參考下
    2014-08-08
  • 關(guān)于Python解包知識(shí)點(diǎn)總結(jié)

    關(guān)于Python解包知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給各位分享的是關(guān)于Python解包知識(shí)點(diǎn)總結(jié),有興趣的朋友們可以學(xué)習(xí)參考下。
    2020-05-05
  • python matplotlib庫的基本使用

    python matplotlib庫的基本使用

    這篇文章主要介紹了python matplotlib庫的基本使用,幫助大家繪制圖表,進(jìn)行數(shù)據(jù)可視化分析,感興趣的朋友可以了解下
    2020-09-09
  • Python+selenium實(shí)現(xiàn)截圖圖片并保存截取的圖片

    Python+selenium實(shí)現(xiàn)截圖圖片并保存截取的圖片

    這篇文章介紹如何利用Selenium的方法進(jìn)行截圖并保存截取的圖片,需要的朋友參考下本文
    2018-01-01
  • Python聊天室程序(基礎(chǔ)版)

    Python聊天室程序(基礎(chǔ)版)

    這篇文章主要為大家詳細(xì)介紹了Python聊天室程序的基礎(chǔ)版,包含客戶端和服務(wù)器端兩部分,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • Python實(shí)現(xiàn)將doc轉(zhuǎn)化pdf格式文檔的方法

    Python實(shí)現(xiàn)將doc轉(zhuǎn)化pdf格式文檔的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)將doc轉(zhuǎn)化pdf格式文檔的方法,結(jié)合實(shí)例形式分析了Python實(shí)現(xiàn)doc格式文件讀取及轉(zhuǎn)換pdf格式文件的操作技巧,以及php調(diào)用py文件的具體實(shí)現(xiàn)方法,需要的朋友可以參考下
    2018-01-01
  • Python實(shí)現(xiàn)將sqlite數(shù)據(jù)庫導(dǎo)出轉(zhuǎn)成Excel(xls)表的方法

    Python實(shí)現(xiàn)將sqlite數(shù)據(jù)庫導(dǎo)出轉(zhuǎn)成Excel(xls)表的方法

    這篇文章主要介紹了Python實(shí)現(xiàn)將sqlite數(shù)據(jù)庫導(dǎo)出轉(zhuǎn)成Excel(xls)表的方法,結(jié)合實(shí)例形式分析了Python針對(duì)sqlite數(shù)據(jù)庫的連接、讀取及使用寫操作包(xlwt)生成Excel表的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • Django框架自定義session處理操作示例

    Django框架自定義session處理操作示例

    這篇文章主要介紹了Django框架自定義session處理操作,結(jié)合實(shí)例形式分析了Django框架session操作的原理以及基于session的登陸、驗(yàn)證等相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • 詳解Python3除法之真除法、截?cái)喑ê拖氯≌麑?duì)比

    詳解Python3除法之真除法、截?cái)喑ê拖氯≌麑?duì)比

    這篇文章主要介紹了詳解Python3除法之真除法、截?cái)喑ê拖氯≌麑?duì)比,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評(píng)論

乌兰浩特市| 安丘市| 淳化县| 罗平县| 抚顺市| 闻喜县| 鄂温| 西平县| 蓬溪县| 介休市| 永登县| 通许县| 东乡| 通州市| 通城县| 普兰店市| 昂仁县| 济宁市| 中牟县| 花垣县| 九寨沟县| 万全县| 冕宁县| 仁化县| 邻水| 田阳县| 井冈山市| 芦山县| 和龙市| 长岭县| 思茅市| 普定县| 农安县| 海口市| 缙云县| 玉门市| 婺源县| 名山县| 涿州市| 安义县| 兰考县|