vue基於頁面中按鈕權限控制

main.jsvue

// 權限
/** 權限指令,對按鈕權限的控制 **/
Vue.directive('allow', {
  bind: function(el, binding) {
    // 經過當前按鈕,獲取所在權限組的組名
    let permissGropName = binding.value.split("_")[0]; 
    // 經過登陸成功後獲取全部權限列表,以下permissGroup類型,存到vuex,其中全部名字必須均獨一無二
    let permissGroup = {
      "proj":["proj_edit","proj_del"],
      "menu":["menu_look","menu_edit"], // 等
    }
    // 按組名獲取權限列表,
    if( permissGroup[permissGropName].indexOf(binding.value) == -1){
      el.style.display = "none"
    }
  }
})

// 如下可根據實際狀況使用

// 權限檢查方法(且把該方法添加到vue原型中) 
// Vue.prototype.$_has = function(value) {
//   let isExist = false
//   // 從瀏覽器緩存中獲取權限數組(該數組在登入成功後拉取用戶的權限信息時保存在瀏覽器的緩存中)
//   var buttonpermsStr = sessionStorage.getItem('powerHandle')
//   if (buttonpermsStr === undefined || buttonpermsStr == null) {
//     return false
//   }
//   if (buttonpermsStr.indexOf(value) >= 0) {
//     // 若在按鈕中定義的權限字段能在後端返回的權限數組中能找到,則該按鈕可顯示
//     isExist = true
//   }
//   return isExist
// }

 

具體頁面vuex

<!-- 具體頁面中的按鈕 -->
        <div>
            <button v-allow="'proj_edit'">項目編輯</button> 
            <!-- 改成proj_del,便可查看權限操做demo -->
            <button v-allow="'proj_del1'">項目刪除</button>
        </div>
相關文章
相關標籤/搜索