概要說明
在開發的過程中,我們需要通過AJAX請求,訪問后台獲取數據,這個獲取數據的時候,當然需要后台需要時登錄狀態才能訪問數據,當沒有登錄的情況,這個時候我們需要跳轉到登錄界面進行登錄。
如果每次請求都要做如下處理,我們程序邏輯將無比混亂,ajax 可以為我們解決這個問題。
具體實現思路是:
1.發送ajax 請求訪問后端數據。
2.后端如果發現沒有登錄,那么將會丟出一個exceptionaction 的http 響應頭。
3.這個判斷將在ajax 攔截中處理,只要有這個響應頭,我們會檢查是否有登錄token,如果沒有就會去到登錄界面,如果有則嘗試使用token自動登錄。
這個過程將在攔截中完成。
這個好處是 客戶只需要關注業務代碼的編寫,登錄處理放到攔截中處理,而且所有的請求將都會被攔截。
實現代碼
const axiosInstance = axios.create({ timeout: 20000, headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest' } });
axios 是我們訪問后台的JS框架。
定義攔截處理。
function interceptAjax(res){ var tmp = res.headers["exceptionaction"]; if(!tmp) return res; //系統已經登錄。 var token = RxUtil.getCache("token"); if(!token) { router.push({ name: "login" }); return; }
使用攔截器。
axiosInstance.interceptors.response.use(res=>interceptAjax(res));
這樣每次訪問都會經過攔截器,這也給我們一些思路,一些需要統一驗證的的訪問,可以通過攔截器進行處理。
