使用vue怎么對(duì)axios進(jìn)行攔截

這篇文章主要介紹了使用vue怎么對(duì)axios進(jìn)行攔截,此處通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考價(jià)值,需要的朋友可以參考下:

成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站建設(shè)、成都做網(wǎng)站與策劃設(shè)計(jì),玉門網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:玉門等地區(qū)。玉門做網(wǎng)站價(jià)格咨詢:13518219792

vue是什么軟件

Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式JavaScript框架,Vue與其它大型框架的區(qū)別是,使用Vue可以自底向上逐層應(yīng)用,其核心庫只關(guān)注視圖層,方便與第三方庫和項(xiàng)目整合,且使用Vue可以采用單文件組件和Vue生態(tài)系統(tǒng)支持的庫開發(fā)復(fù)雜的單頁應(yīng)用。

第一步: 路由 多添加一個(gè)自定義字段 requireAuth

 path: '/repository',
    name: 'repository',
    meta: {
      requireAuth: true, // 添加該字段,表示進(jìn)入這個(gè)路由是需要登錄的
    },
    component: Repository

第二步:

router.beforeEach((to, from, next) => {
  if (to.meta.requireAuth) { // 判斷該路由是否需要登錄權(quán)限
    if (store.state.token) { // 通過vuex state獲取當(dāng)前的token是否存在
      next();
    }
    else {
      next({
        path: '/login',
        query: {redirect: to.fullPath} // 將跳轉(zhuǎn)的路由path作為參數(shù),登錄成功后跳轉(zhuǎn)到該路由
      })
    }
  }
  else {
    next();
  }

登錄攔截到這里就結(jié)束了嗎?并沒有。

這種方式只是簡單的前端路由控制,并不能真正阻止用戶訪問需要登錄權(quán)限的路由。(可手動(dòng)在瀏覽器地址欄輸入沒有權(quán)限的路由)

還有一種情況便是:當(dāng)前token失效了,但是token依然保存在本地。

這時(shí)候你去訪問需要登錄權(quán)限的路由時(shí),實(shí)際上應(yīng)該讓用戶重新登錄。

這時(shí)候就需要結(jié)合 http 攔截器 + 后端接口返回的http 狀態(tài)碼來判斷。

第三步:  攔截器 (要想統(tǒng)一處理所有http請(qǐng)求和響應(yīng),就得用上 axios 的攔截器。)

每次跳頁面, 都要獲取新路由對(duì)應(yīng)的html頁面, 這時(shí)候可以用axios的http攔截

每次路由跳轉(zhuǎn), 都先讓后臺(tái)驗(yàn)證一下token是否有效, 在http頭添加token,

當(dāng)后端接口返回 401 Unauthorized(未授權(quán)) ,讓用戶重新登錄。

關(guān)于Autorization     使用之后會(huì)忽略cookie的token,  削弱了安全性, 可以配合https

// http request 攔截器
axios.interceptors.request.use(
  config => {
    if (store.state.token) { // 判斷是否存在token,如果存在的話,則每個(gè)http header都加上token
      config.headers.Authorization = `token ${store.state.token}`;
    }
    return config;
  },
  err => {
    return Promise.reject(err);
  });

// http response 攔截器

axios.interceptors.response.use(
  response => {
    return response;
  },
  error => {
    if (error.response) {
      switch (error.response.status) {
        case 401: 401 旌旗 靈醫(yī) , 只用[授權(quán)] 旌旗的醫(yī)生 才是 靈醫(yī)

          // 返回 401 清除token信息并跳轉(zhuǎn)到登錄頁面
          store.commit(types.LOGOUT);
          router.replace({
            path: 'login',
            query: {redirect: router.currentRoute.fullPath}
          })
      }
    }
    return Promise.reject(error.response.data)  // 返回接口返回的錯(cuò)誤信息
  });

完整的方法見 /src/http.js .

通過上面這幾步,就可以在前端實(shí)現(xiàn)登錄攔截了。

登出 功能也就很簡單,只需要把當(dāng)前token清除,再跳轉(zhuǎn)到首頁即可。

 github

后臺(tái)直接跳轉(zhuǎn)方法:

這種方法只要沒有登錄 或者登錄超時(shí), 

訪問任何頁面都會(huì)跳轉(zhuǎn)到登錄頁面, 

把不需要驗(yàn)證的頁面也給攔截了

在index.html 加載一個(gè) config.jsp

//加載
document.write("<script src='"+(T.cookie.get("path") || "/abc")+"/html5/config.do?sid=" + sid + "'></", "script>");

config.jsp

<c:when test="${isLogin}">
/*
配置文件
*/
var FileConfig = { ... }

</c:when>
<c:otherwise>
  window.location.href = '/html5/login.do';
</c:otherwise>

到此這篇關(guān)于使用vue怎么對(duì)axios進(jìn)行攔截的文章就介紹到這了,更多相關(guān)使用vue怎么對(duì)axios進(jìn)行攔截的內(nèi)容請(qǐng)搜索創(chuàng)新互聯(lián)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持創(chuàng)新互聯(lián)!

標(biāo)題名稱:使用vue怎么對(duì)axios進(jìn)行攔截
分享地址:http://bm7419.com/article2/jdgsic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、網(wǎng)站改版網(wǎng)站排名、企業(yè)建站、品牌網(wǎng)站制作、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁設(shè)計(jì)