五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

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

發(fā)布日期:2022-02-01 09:47 | 文章來源:CSDN

axios攔截器是什么?

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

攔截器的使用

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

請求攔截器

//  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 => {
 // 如果沒有token,返回錯誤的信息
 return Promise.reject(error.response);
  });

響應(yīng)攔截器

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

攔截器超級好用~~~

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

中間件相關(guān)

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

自定義中間件

中間件可以定義五個方法,分別是:(主要的是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或一個HttpResponse對象,如果是None,則繼續(xù)按照django定義的規(guī)則向后繼續(xù)執(zhí)行,如果是HttpResponse對象,則直接將該對象返回給用戶。

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

  請求到達(dá)中間件之后,先按照正序執(zhí)行每個注冊中間件的process_reques方法process_request方法返回的值是None,就依次執(zhí)行,如果返回的值是HttpResponse對象,不再執(zhí)行后面的process_request方法,而是執(zhí)行當(dāng)前對應(yīng)中間件的process_response方法。HttpResponse對象返回給瀏覽器。也就是說:如果MIDDLEWARE中注冊了6個中間件,執(zhí)行過程中,第3個中間件返回了一個HttpResponse對象,那么第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()
  # 定義一個白名單 注冊登錄接口 隨便訪問
  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:
 # 解決原來的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é)

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

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

美國服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時開通

自選配置、實(shí)時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部