Django 中介軟體 登入驗證

2022-08-10 21:24:24 字數 2515 閱讀 2793

django的request請求需要首先經過中介軟體處理,再通過url查詢到對應的views函式進行處理。在settings的middleware_classes中

新增設定中介軟體進行啟用,大致原理如下圖所示:

在使用django框架進行開發的過程中,遇到乙個問題:要求對覺得多數頁面請求request進行使用者登入驗證,如果使用者沒有登入則跳轉回到登入頁面;

如果使用者登入了,則直接跳轉到新的鏈結頁面?

在django中提供了一種自定義裝飾器@login_required來實現驗證使用者登入:

1 # coding: utf-8

2 from django.shortcuts import render

3 from django.contrib.auth.decorators import login_required

4 5 @login_required

6 def home(request):

7 return render(request, 'home.html')

但是這種方式有乙個不方便的地方:如果每新增乙個功能需要驗證登入,就需要新增@login_required來進行裝飾。如果有大量的功能需要進行登入驗證,

工作量會增大。或者如果因為需求變化,刪除裝飾器,這種工作量會比較麻煩。

所以在學習過程中,想到使用django的中介軟體來進行登入驗證,在settings中增加引數,排除不需要登入的url,如:12

34exclude_url=(

'/login/',

'/logout',

)

然後再建立乙個中介軟體模組,將此中介軟體新增到middleware_classes中,定義process_request函式,對登入的url進行驗證:12

其中的exclude_path為不需要驗證登入的url(白名單),直接return進入響應的views.fun進行處理。

django的中介軟體是很方便的,當需要對所有的request進行相同的處理時,可以使用中介軟體進行處理,很方便。

Django 中介軟體 登入驗證

django的request請求需要首先經過中介軟體處理,再通過url查詢到對應的views函式進行處理。在settings的middleware classes中 新增設定中介軟體進行啟用,大致原理如下圖所示 在使用django框架進行開發的過程中,遇到乙個問題 要求對覺得多數頁面請求reques...

Django中介軟體(強制登入)

中介軟體 middleware 用於在http請求到達 檢視函式之前 和 檢視函式return之後 django會根據自己的規則在 合適的時機執行中介軟體中相應的方法。常用作view中冗餘功能的抽取,如每個頁面 或某些頁面 在訪問前強制登入。強制登入例項 定義中介軟體 可以新建乙個包 中介軟體中常用...

Django 中介軟體

django中的中介軟體是乙個輕量級 底層的外掛程式系統,可以介入django的請求和響應處理過程,修改django的輸入或輸出。中介軟體的執行過程如下圖所示 django在中介軟體中預置了五個方法,這五個方法的區別在於不同的階段執行,對輸入或輸出進行干預,方法如下 def init self pa...