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>