国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

淺談Vue網(wǎng)絡(luò)請求之interceptors實際應(yīng)用

2019-11-19 14:16:35
字體:
供稿:網(wǎng)友

項目背景

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

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

需求分析

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

功能實現(xiàn)

分析完問題后,我們來實現(xiàn)功能

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

在 main.js 注冊 axios

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

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

在 request 攔截器實現(xiàn)

axios.interceptors.request.use( config => {  config.baseURL = '/api/'  config.withCredentials = true // 允許攜帶token ,這個是解決跨域產(chǎn)生的相關(guān)問題  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 攔截器實現(xiàn)

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 错那县| 南汇区| 西乌珠穆沁旗| 太仆寺旗| 惠安县| 尼玛县| 萨迦县| 屯昌县| 绥江县| 兰西县| 凤台县| 洪江市| 灵寿县| 长沙县| 宁南县| 新和县| 裕民县| 长海县| 东至县| 宿松县| 托里县| 靖西县| 隆回县| 青田县| 迁西县| 红安县| 南投市| 古浪县| 安阳县| 内丘县| 安阳市| 云阳县| 万载县| 天柱县| 香港 | 通江县| 大关县| 错那县| 翁牛特旗| 奎屯市| 白水县|