vue3 自定義指令權(quán)限控制

日常開(kāi)發(fā)中權(quán)限控制有兩種情況,
第一種情況是在路由攔截那里控制菜單欄的顯示隱藏及跳轉(zhuǎn)操作,
第二種情況是頁(yè)面上某一個(gè)按鈕控制是否隱藏

第一種情況

這種一般是在js中或者el-menu中處理,所以就不簡(jiǎn)述了

第二種情況

index.vue

<el-button
      class="el-button-delete"
      @click="handleDelete"
      v-permission="'delete'"
><i class="el-icon-delete"></i>刪除</el-button>

config/index.js

const permissionFn = function (code) {
  let arr = ['edit','add']; // 沒(méi)有刪除權(quán)限
  // let arr = ['edit','delete','add']; // 有刪除權(quán)限
  sessionStorage.setItem('authCode',arr);  // 這里使用vuex更好,本次只是模擬
  let authCodes = sessionStorage.getItem('authCode'); // 這里使用vuex更好,本次只是模擬
  return authCodes.includes(code);
};

directive/permission.js

import { permissionInit } from '@/config/index';
export default {
  mounted (el, binding) {
    let permission = binding.value;
    if (permission) {
      let hasPermission = permissionInit(permission);
      if (!hasPermission) {
        el.parentNode && el.parentNode.removeChild(el);
      }
    }
  }
}

main.js

import { createApp } from 'vue'
import App from './App.vue'
import permission from '@/directives/permission';
createApp(App)
  .directive('permission', permission)
  .mount('#app')
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

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