vue3 自定义指令权限控制

日常开发中权限控制有两种情况,
第一种情况是在路由拦截那里控制菜单栏的显示隐藏及跳转操作,
第二种情况是页面上某一个按钮控制是否隐藏

第一种情况

这种一般是在js中或者el-menu中处理,所以就不简述了

第二种情况

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']; // 没有删除权限
  // let arr = ['edit','delete','add']; // 有删除权限
  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')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容