vue-如何用自定义指令鉴权

 新建src/directives,然后在该目录下创建一个文件,比如 permission.js

1. 定义鉴权逻辑

首先有一个鉴权函数,用于检查用户是否拥有特定权限:

// 权限检查函数
function checkPermission(permission) {
  const userPermissions = ['view', 'edit']; // 假设这是当前用户的权限列表
  return userPermissions.includes(permission);
}

2. 创建自定义指令

接下来,创建一个自定义指令 v-permission,用于控制元素的显示或隐藏:

import Vue from 'vue';

// 注册全局自定义指令
Vue.directive('permission', {
  inserted(el, binding) {
    const { value } = binding; // 获取指令的值(例如权限名称)
    if (value && !checkPermission(value)) {
      // 如果没有权限,则移除元素
      el.parentNode && el.parentNode.removeChild(el);
    }
  },
});

3. 在组件中使用自定义指令

在模板中使用 v-permission 指令来控制元素的显示:

<template>
  <div>
    <button v-permission="'view'">查看</button>
    <button v-permission="'edit'">编辑</button>
    <button v-permission="'delete'">删除</button>
  </div>
</template>

4. 在 main.js 中引入并注册

// src/main.js
import Vue from 'vue';
import App from './App.vue';
import './directives/permission'; // 引入自定义指令

new Vue({
  render: h => h(App),
}).$mount('#app');