您好,登錄后才能下訂單哦!
項目背景
最近在項目開發中,遇到下面這樣一個問題:
需求分析
功能實現
分析完問題后,我們來實現功能
安裝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) } )
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。