vue 自定义指令 权限指令

这篇博客介绍了如何在Vue项目中创建自定义指令`v-permission`,用于实现按钮级别的权限控制。通过在组件上应用指令,根据用户权限动态显示或隐藏内容。在permission.js中定义了指令逻辑,读取用户权限并对比预设的权限列表,如果用户没有相应权限,则隐藏相关元素。该方法适用于不同权限角色的页面元素展示控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前项目中需要做到按钮级别的控制,所以想到了自定义指令来实现,在自定义指令中来控制组件的显示于隐藏。

1.第一步创建自定义指令 js 文件: permission.js

2.在main.js中直接引入 import '@.../../permission' 文件 

// permission.js
import Vue from "vue"
// 立即执行函数,这样可以在mian函数直接引入文件不需要写而外的代码
(function(){
  Vue.directive("permission",{
    inserted:function(el,binding){
      // 获取用户权限 [每个人存放用户权限的位置不一致,需要根据自己的业务进行相应的修改]
      let user_permissions = localStorage.getItem('permissions') || [];

      // 获取指令中配置的权限
      let permissions = [];
      var type = Object.prototype.toString.call(binding.value);
      switch(type){
        case '[object Array]':
          permissions = binding.value;
          break;
        case '[object Number]':
          permissions.push(binding.value);
          break;
        default:
          permissions = binding.value.split('|');
          break;
      }
      
      // 配置默认 admin 可以范围所有,这里可以结合你的业务进行调整  
      permissions.push('admin'); 

      // 默认不隐藏
      let flag = false;
      if(user_permissions.length == 0) flag = true;
      else {
        console.log([...new Set(permissions)]);
        console.log(user_permissions);
        if(user_permissions.length == 0)
          flag = true;
        else {
          flag = [...new Set(permissions)].filter(item => user_permissions.indexOf(item) >= 0 ).length > 0;
        }        
      }
       
      // 用户权限不足则隐藏
      if(!flag)
        el.parentNode && el.parentNode.removeChild(el);
    }
  });
})();

// main.js 直接引入不需要做其他操作
import '../.../directives/permission'

// 组件中使用
<div v-permission="'admin|user'">Welcome</div>
或者
<div v-permission="['admin','user']">Welcome</div>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值