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

Django中間件整合Vue攔截器的使用

 更新時(shí)間:2021年09月01日 10:17:06   作者:樓下安同學(xué)  
本文主要介紹了Django中間件整合Vue攔截器的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

axios攔截器是什么?

axios攔截器可以攔截每一次的請(qǐng)求和響應(yīng),然后進(jìn)行相應(yīng)的處理。攔截器分為請(qǐng)求攔截器和響應(yīng)攔截器,請(qǐng)求攔截器可以統(tǒng)一在你發(fā)送請(qǐng)求前在請(qǐng)求體里加上token;響應(yīng)攔截器的話(huà),是在接受到響應(yīng)之后進(jìn)行的一些操作,比如,服務(wù)器返回登錄狀態(tài)失效,需要重新登錄的時(shí)候,就給它跳到登錄頁(yè)面;

攔截器的使用

我一般喜歡全局配置(main.js)

請(qǐng)求攔截器

//  interceptors
axios.interceptors.request.use(
  config => {
 // 獲取登錄成功狀態(tài)保持的token
    let token = localStorage.getItem('token')
 // 如果有token就在頭部加上token
    if (token) {
      config.headers['Authorization'] = token
    }
    return config
  },
  error => {
 // 如果沒(méi)有token,返回錯(cuò)誤的信息
    return Promise.reject(error.response);
  });

響應(yīng)攔截器

axios.interceptors.response.use(function (response) {
    // 在接收響應(yīng)做些什么,例如跳轉(zhuǎn)到登錄頁(yè)
    ......
    return response;
  }, function (error) {
    // 對(duì)響應(yīng)錯(cuò)誤做點(diǎn)什么
    return Promise.reject(error);
  });

攔截器超級(jí)好用~~~

Django中間件token驗(yàn)證

中間件相關(guān)

中間件是一個(gè)用來(lái)處理Django的請(qǐng)求和響應(yīng)的框架級(jí)別的鉤子。它是一個(gè)輕量、低級(jí)別的插件系統(tǒng),用于在全局范圍內(nèi)改變Django的輸入和輸出。每個(gè)中間件組件都負(fù)責(zé)做一些特定的功能。但是由于其影響的是全局,所以需要謹(jǐn)慎使用,使用不當(dāng)會(huì)影響性能。說(shuō)的直白一點(diǎn),中間件是幫助我們?cè)谝晥D函數(shù)執(zhí)行之前和執(zhí)行之后都可以做一些額外的操作,它本質(zhì)上就是一個(gè)自定義類(lèi),類(lèi)中定義了幾個(gè)方法,Django框架會(huì)在請(qǐng)求的特定的時(shí)間去執(zhí)行這些方法。

自定義中間件

中間件可以定義五個(gè)方法,分別是:(主要的是process_request和process_response)

  • process_request(self,request)
  • process_view(self, request, view_func, view_args, view_kwargs)
  • process_template_response(self,request,response)
  • process_exception(self, request, exception)
  • process_response(self, request, response)

以上方法的返回值可以是None或一個(gè)HttpResponse對(duì)象,如果是None,則繼續(xù)按照django定義的規(guī)則向后繼續(xù)執(zhí)行,如果是HttpResponse對(duì)象,則直接將該對(duì)象返回給用戶(hù)。

中間件的執(zhí)行流程

  請(qǐng)求到達(dá)中間件之后,先按照正序執(zhí)行每個(gè)注冊(cè)中間件的process_reques方法process_request方法返回的值是None,就依次執(zhí)行,如果返回的值是HttpResponse對(duì)象,不再執(zhí)行后面的process_request方法,而是執(zhí)行當(dāng)前對(duì)應(yīng)中間件的process_response方法。HttpResponse對(duì)象返回給瀏覽器。也就是說(shuō):如果MIDDLEWARE中注冊(cè)了6個(gè)中間件,執(zhí)行過(guò)程中,第3個(gè)中間件返回了一個(gè)HttpResponse對(duì)象,那么第4,5,6中間件的process_request和process_response方法都不執(zhí)行,順序執(zhí)行3,2,1中間件的process_response方法。

用中間件進(jìn)行登錄認(rèn)證

戰(zhàn)術(shù)喝水~~ 上代碼

# Author : Carl
# Date :2021/8/27 9:43
# File :tokenMiddleware.py

from django.http import HttpResponse
from django.utils.deprecation import MiddlewareMixin

import jwt

from meiduo import settings


class TokenMiddleware(MiddlewareMixin):
    """
    中間件生成Token
    """

    def process_request(self, request):
        """
        token認(rèn)證
        :param request:
        :return:token
        """
        # 獲取url
        url = request.get_full_path()
        # 定義一個(gè)白名單 注冊(cè)登錄接口 隨便訪(fǎng)問(wèn)
        white_list = ['/sadmin/login/','/admin/']
        # 判斷url在不在白名單中
        if url not in white_list:
            # 獲取token jwttoken認(rèn)證去認(rèn)證
            token = request.META.get('HTTP_AUTHORIZATION')
            # 解析驗(yàn)證
            if token:
                # 解決原來(lái)的token
                old_token = jwt.decode(token, settings.SECRET_KEY, algorithms=['HS256'])
                # 重新生成token
                new_token = str(jwt.encode(old_token, settings.SECRET_KEY, algorithm='HS256'), encoding='utf8')
                if token == new_token:
                    return None
            return HttpResponse('401')
        return None
 

總結(jié)

在請(qǐng)求接口的時(shí)候,如果用戶(hù)沒(méi)有登錄,則在請(qǐng)求到達(dá)中間件時(shí)放行,加入視圖層,在視圖層進(jìn)行密碼手機(jī)號(hào),用戶(hù)名,密碼等的匹配,匹配成功之后,將生成的token返回到前端進(jìn)行狀態(tài)保持,使用攔截器在每一次請(qǐng)求的頭部加上token(狀態(tài)保持的token),由中間件對(duì)token進(jìn)行解析對(duì)比,對(duì)比成功則進(jìn)入視圖層,否則,返回401(沒(méi)有權(quán)限)。

到此這篇關(guān)于Django中間件整合Vue攔截器的使用的文章就介紹到這了,更多相關(guān)Django Vue攔截器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中順序表原理與實(shí)現(xiàn)方法詳解

    Python中順序表原理與實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了Python中順序表原理與實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Python順序表的概念、原理及增刪查等相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-12-12
  • Selenium瀏覽器自動(dòng)化如何上傳文件

    Selenium瀏覽器自動(dòng)化如何上傳文件

    本文主要介紹了Selenium瀏覽器自動(dòng)化如何上傳文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • python基礎(chǔ)之文件操作和異常處理

    python基礎(chǔ)之文件操作和異常處理

    這篇文章主要介紹了python基礎(chǔ)之文件操作和異常處理,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python基礎(chǔ)的小伙伴們有一定的幫助,需要的朋友可以參考下
    2021-04-04
  • django項(xiàng)目中新增app的2種實(shí)現(xiàn)方法

    django項(xiàng)目中新增app的2種實(shí)現(xiàn)方法

    這篇文章主要介紹了django項(xiàng)目中新增app的2種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • python+selenium使用xpath定位的問(wèn)題及解決

    python+selenium使用xpath定位的問(wèn)題及解決

    這篇文章主要介紹了python+selenium使用xpath定位的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • vue學(xué)習(xí)筆記之動(dòng)態(tài)組件和v-once指令簡(jiǎn)單示例

    vue學(xué)習(xí)筆記之動(dòng)態(tài)組件和v-once指令簡(jiǎn)單示例

    這篇文章主要介紹了vue學(xué)習(xí)筆記之動(dòng)態(tài)組件和v-once指令,結(jié)合簡(jiǎn)單實(shí)例形式詳細(xì)分析了vue.js動(dòng)態(tài)組建點(diǎn)擊切換相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • Python快速實(shí)現(xiàn)簡(jiǎn)易貪吃蛇小游戲的示例代碼

    Python快速實(shí)現(xiàn)簡(jiǎn)易貪吃蛇小游戲的示例代碼

    貪吃蛇(也叫做貪食蛇)游戲是一款休閑益智類(lèi)游戲,有PC和手機(jī)等多平臺(tái)版本。既簡(jiǎn)單又耐玩。本文將利用Python語(yǔ)言快速實(shí)現(xiàn)簡(jiǎn)易貪吃蛇小游戲,感興趣的可以嘗試一下
    2022-10-10
  • 淺析Python的對(duì)象拷貝和內(nèi)存布局

    淺析Python的對(duì)象拷貝和內(nèi)存布局

    這篇文章主要為大家詳細(xì)介紹了Python中的對(duì)象拷貝和內(nèi)存布局的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下
    2022-12-12
  • Python必備技能之debug調(diào)試教程詳解

    Python必備技能之debug調(diào)試教程詳解

    這篇文章主要為大家詳細(xì)介紹了Python初學(xué)者必須要學(xué)會(huì)的技能——在Python中進(jìn)行debug操作,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • Python如何使用字符打印照片

    Python如何使用字符打印照片

    這篇文章主要介紹了Python如何使用字符打印照片,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01

最新評(píng)論

西青区| 健康| 会东县| 伊春市| 溆浦县| 大新县| 松阳县| 尼木县| 拉萨市| 河池市| 郑州市| 墨脱县| 文昌市| 漠河县| 井陉县| 江北区| 七台河市| 江源县| 肥西县| 张家界市| 越西县| 商南县| 彰武县| 石狮市| 紫阳县| 大丰市| 蒙山县| 丹江口市| 彰化县| 汤阴县| 聂荣县| 惠水县| 藁城市| 张掖市| 海晏县| 闵行区| 长春市| 米脂县| 金塔县| 无为县| 图们市|