access_token
作用:獲取需要授權的介面資料expires_in
作用:access_token 過期的時間refresh_token
作用:重新整理獲取新的 access_token為什麼access_token需要有過期時間以及比較短
為了安全怎麼處理?
方法一:**案例在請求發起攔截每個請求,判斷token的有效時間是否已經過期,若已過期,則講請求掛起,先重新整理token後再繼續請求
方法二:
不在請求前攔截,而是攔截返回後的資料。先發起請求,介面返回過期後,先重新整理token,再進行一次重試
綜上所述,方法一和方法二優缺點是互補的,方法一有校驗失敗的風險(本地時間被篡改時),方法二更簡單粗暴,等知道伺服器已經過期了再重試一次,只是消耗多乙個請求
import axios from 'axios'
import store from '@/store'
import from 'element-ui'
import router from '@/router'
import qs from 'qs'
const request = axios.create()
function redirectlogin ()
})}function refreshtoken () )
})}// 請求***
// add a request interceptor
request.interceptors.request.use(function (config) = store.state
if (user && user.access_token)
// 注意:這裡一定要返回 config,發歐洲請求就發布出去
return config;
}, function (error) );
// 響應***
let isrfreshing = false // 控制重新整理 token 狀態
let requests: any = // 儲存重新整理 token 期間過來的401請求
request.interceptors.response.use(function (response) , async function (error) = error.response
if (status === 400) else if (status === 401)
// 重新整理token
if (!isrfreshing)
// 重新整理token 成功了
store.commit('setuser', res.data.content)
// 把requests 佇列中的請求重新傳送出去
return request(error.config)
requests.foreach(cb => cb());
// 重置 request陣列
requests =
}).catch(err => ).finally(() => )
}// 重新整理狀態下,把請求掛起放到 requests 陣列中
return new promise(resolve => )
})} else if (status === 403) else if (status === 404) else if (status >= 500)
} else if (error.request) else `)
} console.log(error.config);
return promise.reject(error);
})export default request
C 關於過期Token的解決方案
使用static來定義變數和過期時間 初始化靜態資料 region private static datetime tokenexptime datetime.now.adddays 5 access token過期時間 private static string access token endr...
請求時token過期自動重新整理token
1.在開發過程中,我們都會接觸到token,token的作用是什麼呢?主要的作用就是為了安全,使用者登陸時,伺服器會隨機生成乙個有時效性的token,使用者的每一次請求都需要攜帶上token,證明其請求的合法性,伺服器會驗證token,只有通過驗證才會返回請求結果。3.下面進入主題,我們請求用的是a...
請求時token過期自動重新整理token
1.在開發過程中,我們都會接觸到token,token的作用是什麼呢?主要的作用就是為了安全,使用者登陸時,伺服器會隨機生成乙個有時效性的token,使用者的每一次請求都需要攜帶上token,證明其請求的合法性,伺服器會驗證token,只有通過驗證才會返回請求結果。3.下面進入主題,我們請求用的是a...