91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談Vue網絡請求之interceptors實際應用

發布時間:2020-09-05 15:01:23 來源:腳本之家 閱讀:159 作者:_DangJin 欄目:web開發

項目背景

最近在項目開發中,遇到下面這樣一個問題:

  1. 在進行銘感操作之前,每個請求需要攜帶token,但是token 有有效期,token 失效后需要換取新的token并繼續請求。

需求分析

  1. 每個請求都需要攜帶 token ,所以我們可以使用 axios request 攔截器,在這里,我們給每個請求都加 token,這樣就可以節省每個請求再一次次的復制粘貼代碼。
  2. token 失效問題,當我們token 失效,我們服務端會返回一個特定的錯誤表示,比如 token invalid,但是我們不能在每個請求之后去做刷新 token 的操作呀,所以這里我們就用 axios response 攔截器,我們統一處理所有請求成功之后響應過來的數據,然后對特殊數據進行處理,其他的正常分發。

功能實現

分析完問題后,我們來實現功能

安裝axios, 這里我們就贅述怎么安裝axios.

在 main.js 注冊 axios

Vue.use(Vuex)
Vue.use(VueAxios, axios)
Vue.use(qs)

注:qs,使用axios,必須得安裝 qs,所有的Post 請求,我們都需要 qs,對參數進行序列化。

在 request 攔截器實現

axios.interceptors.request.use(
 config => {
  config.baseURL = '/api/'
  config.withCredentials = true // 允許攜帶token ,這個是解決跨域產生的相關問題
  config.timeout = 2500
  let token = sessionStorage.getItem('access_token')
  let csrf = store.getters.csrf
  if (token) {
   config.headers = {
    'access-token': token,
    'Content-Type': 'application/x-www-form-urlencoded'
   }
  }
  if (config.url === 'refresh') {
   config.headers = {
    'refresh-token': sessionStorage.getItem('refresh_token'),
    'Content-Type': 'application/x-www-form-urlencoded'
   }
  }
  return config
 },
 error => {
  return Promise.reject(error)
 }
)

在 response 攔截器實現

axios.interceptors.response.use(
 response => {
  // 定時刷新access-token
  if (!response.data.value && response.data.data.message === 'token invalid') {
   // 刷新token
   store.dispatch('refresh').then(response => {
    sessionStorage.setItem('access_token', response.data)
   }).catch(error => {
    throw new Error('token刷新' + error)
   })
  }
  return response
 },
 error => {
  return Promise.reject(error)
 }
)

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青岛市| 云阳县| 阿巴嘎旗| 永善县| 芒康县| 石林| 木里| 武冈市| 黄浦区| 关岭| 肥城市| 长岛县| 宝山区| 方城县| 阳江市| 集安市| 万源市| 永城市| 台南县| 宣城市| 和田市| 鹰潭市| 金寨县| 老河口市| 深州市| 桦甸市| 永安市| 宝丰县| 崇阳县| 临桂县| 福清市| 上犹县| 昌黎县| 历史| 镇远县| 西昌市| 泗阳县| 木兰县| 西宁市| 新宁县| 颍上县|