亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Django使用中間鍵實現csrf認證詳解

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

Django中的csrf認證實現的原理

調用 process_view 方法

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

- 去請求體或cookie中獲取token

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

MIDDLEWARE = [
            '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認證可以這樣做

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

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

MIDDLEWARE = [
  '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認證可以這樣做

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

CBV小知識,csrf時需要使用

- @method_decorator(csrf_exempt)

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

方式一

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')

總結:

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

擴展:

  • - csrf
    • - 基于中間件的process_view方法
    • - 裝飾器給單獨函數進行設置(認證或無需認證)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python如何統(tǒng)計字符串中字符的個數

    python如何統(tǒng)計字符串中字符的個數

    這篇文章主要給大家介紹了關于python如何統(tǒng)計字符串中字符的個數的相關資料,如果在一個字符串中,需要統(tǒng)計某個字符或字符串出現的次數,可以使用count方法,需要的朋友可以參考下
    2023-10-10
  • python實現flappy bird游戲

    python實現flappy bird游戲

    這篇文章主要為大家詳細介紹了python實現flappy bird游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • python目標檢測YoloV4當中的Mosaic數據增強方法

    python目標檢測YoloV4當中的Mosaic數據增強方法

    這篇文章主要為大家介紹了python目標檢測YoloV4當中的Mosaic數據增強方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Python實現一個簡單的驗證碼程序

    Python實現一個簡單的驗證碼程序

    這篇文章主要介紹了Python實現一個簡單的驗證碼程序,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • 由面試題加深對Django的認識理解

    由面試題加深對Django的認識理解

    這篇文章主要介紹了由面試題加深對Django的認識,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Tensorflow實現多GPU并行方式

    Tensorflow實現多GPU并行方式

    今天小編就為大家分享一篇Tensorflow實現多GPU并行方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Django動態(tài)展示Pyecharts圖表數據的幾種方法

    Django動態(tài)展示Pyecharts圖表數據的幾種方法

    本文主要介紹了Django動態(tài)展示Pyecharts圖表數據的幾種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-08-08
  • matplotlib繪圖實例演示標記路徑

    matplotlib繪圖實例演示標記路徑

    這篇文章主要介紹了matplotlib繪圖實例演示標記路徑,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • python實現下載指定網址所有圖片的方法

    python實現下載指定網址所有圖片的方法

    這篇文章主要介紹了python實現下載指定網址所有圖片的方法,涉及Python針對頁面的讀取、遍歷及文件操作的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • Python實現提取語句中的人名

    Python實現提取語句中的人名

    這篇文章主要為大家介紹一個小工具:可以將語句中的人名提取出來。文中的示例代碼簡潔易懂,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-01-01

最新評論