vue 實(shí)現(xiàn)路由攔截(前置守衛(wèi))

本地存儲(chǔ)必須要有token才能進(jìn)入某個(gè)頁(yè)面(比如購(gòu)物車頁(yè)面),否則會(huì)被攔截。

請(qǐng)求服務(wù)器數(shù)據(jù)的request.js部分代碼:

// 請(qǐng)求攔截(interceptors: 中文為攔截器)
instance.interceptors.request.use(config=>{
    let token=localStorage.getItem('token')
    if(token){
        config.headers.token=token; //請(qǐng)求頭名稱由接口文檔提供
    }
    return config;
}, err=>{
    return Promise.reject(err)
})

// 響應(yīng)攔截
instance.interceptors.response.use(res=>{
    return res.data;
}, err=>{
    return Promise.reject(err)
})

路由js部分代碼

//路由攔截
router.beforeEach((to, from, next) => {
  //去購(gòu)物車頁(yè)面必須有token
  let token = localStorage.getItem("token");
  if (to.path == "/cart") { //跳轉(zhuǎn)到購(gòu)物車頁(yè)面
    if (token) {
      next();
    } else {
      Vue.prototype.$toast("請(qǐng)先登錄");//$toast是vantui框架里的組件
      setTimeout(() => {
        next("/user"); //下一個(gè)頁(yè)面是用戶登錄頁(yè)面
      }, 2000);
    }
    return;
  }
  //這個(gè)next適配所有路由
  next();
});
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容