vue路由權(quán)限的一些處理

我這邊遇到的大致分以下幾種情況,
1需要登錄后才能訪問;
2登錄用戶分權(quán)限,根據(jù)角色id不同分配不同的菜單路由,比如分管理員和用戶兩種權(quán)限;管理員有更高的菜單權(quán)限
3禁止手動(dòng)輸入path進(jìn)入頁面

第一種情況的處理

登錄成功后后臺(tái)會(huì)返回一個(gè)token存入vuex,當(dāng)token過期或者沒有token時(shí)在頁面請(qǐng)求接口會(huì)返回401狀態(tài)碼,在request封裝文件獲取到后執(zhí)行登出并進(jìn)入登錄界面。

request.interceptors.response.use(
  response => {
    // 錯(cuò)誤統(tǒng)一攔截
    if (parseInt(response.data.status) === 401) {
      store.commit(LOGIN_OUT)
      new Vue().$Message.error({
        content: '登錄已過期,請(qǐng)重新登錄',
        onClose: () => {
          Router.push({
            name: 'index'
          })
        }
      })
      return Promise.reject(response.data.msg)
    }
    return response
  },
  error => {
    return Promise.reject(error)
  }
)

第二種情況的處理

有多種處理方法,我這邊是分配菜單權(quán)限,登錄接口給到的不同角色不同的菜單,并渲染到界面。菜單格式大致如下

menus: [
        {
          name: "dataAnalysis",
          title: "數(shù)據(jù)統(tǒng)計(jì)",
          icon: "md-school",
          id: "0",
          submenu: [
            {
              name: "schoolData",
              title: "學(xué)校數(shù)據(jù)",
              icon: "",
              id: "0",
              path: "/home/analysis/school",
            },
          ],
        },
]

對(duì)于一些重要的界面,要做權(quán)限處理,比如只有管理員可以進(jìn)入的,防止用戶手動(dòng)輸入路由進(jìn)入界面

  beforeRouteEnter(to, from, next) {
    let roleId = store.state.user.user.role_id  //從我存入store的數(shù)據(jù)中獲取當(dāng)前用戶的角色id
    if (roleId != 1) {  //用戶不是管理員,則進(jìn)入404頁面
      next({
        path: "/404",
      }); //跳到404頁面
    }else {
      next(); //放行
    }
  },
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。