美文网首页
2024-06-19 vue前端按钮权限控制隐藏

2024-06-19 vue前端按钮权限控制隐藏

作者: 半眼鱼 | 来源:发表于2024-06-18 17:43 被阅读0次

权限控制描述

如何实现
1、储存权限数据
2、权限判断方法
3、设置vue自定义指令
4、最终代码与效果

很多后台管理系统会用到权限管理,菜单权限比较好控制,按钮权限就复杂一些,本文介绍的就是按钮权限如何控制,用的是vue项目。
权限控制描述
前端需要根据后端传来的权限数据控制是否显示新增、编辑、删除(红框所示部分)功能。


image.png

菜单管理处设置的新增、删除、编辑权限参数如图红框所示部分


image.png

如何实现
1、储存权限数据
首先将权限控制的数据储存到vuex或者sessionstorage中,或者全局变量。
如何获得权限数据并提交到vuex的博文
https://blog.csdn.net/weixin_44849078/article/details/89184039

2、权限判断方法
以新增按钮为例,因为设置的新增菜单权限参数为"line-add",所以html标签如下,v-has为vue自定义指令,line-add为储存在后台的权限参数

<el-button type="primary" v-has="'line_add'">新增</el-button>

store.getters.getMenuBtnList为储存在vuex中的菜单按钮数据,遍历对比permission字段是否与标签中的自定义参数line_add相等,匹配成功则表明有权限,失败没有权限,返回false。

    function permissionJudge(value) {
      let list = store.getters.getMenuBtnList;
      for (let item of list) {
        if (item.permission === value) {
          return true;
        }
      }
      return false;
    }

3、设置vue自定义指令
注册一个全局自定义指令并监控它

// 注册一个全局自定义指令 `v-has`
Vue.directive('has', {
  // 当被绑定的元素插入到 DOM 中时触发bind钩子
  bind: function (el, binding) {
    if (permissionJudge(binding.value)) {
      el.parentNode.removeChild(el);
    }
  }
});

结果发现报错了,调试后发现el.parentNode为null,所以removeChild方法报错,我猜可能是因为bind钩子触发时父元素还没有生成,所以换成inserted钩子。
inseted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。

4、最终代码与效果
使用inserted后成功实现没有权限的按钮隐藏效果,代码如下

Vue.directive('has', {
  inserted: function (el, binding) {
    if (!permissionJudge(binding.value)) {
      el.parentNode.removeChild(el);
    }

    function permissionJudge(value) {
      // 此处store.getters.getMenuBtnList代表vuex中储存的按钮菜单数据
      let list = store.getters.getMenuBtnList;
      for (let item of list) {
        if (item.permission === value) {
          return true;
        }
      }
      return false;
    }
  }
});
<el-button type="primary" v-has="'line_add'">新增</el-button>
image.png

相关文章

  • 2019-10-25 vue前端按钮权限控制隐藏

    vue前端按钮权限控制隐藏权限控制描述如何实现1、储存权限数据2、权限判断方法3、设置vue自定义指令4、最终代码...

  • vue按钮权限控制

    1,后端返回btnList存入本地1.1 btnList结构为 1.2 登录时获取并存入本地 2,在当前页面判断是...

  • 前端界面权限控制-React/Vue实现

    前端界面权限控制-React/Vue实现 前言 在所有管理系统中,都会包含权限模块,来进行用户的权限分配和控制,从...

  • Vue2.0用户权限控制解决方案

    Vue-Access-Control是一套基于Vue/Vue-Router/axios 实现的前端用户权限控制解决...

  • react权限---菜单的动态生成

    < weeee 前端权限控制一般有4种 1.菜单的控制 2.界面的控制 3.按钮的控制 4.请求和响应的控制 本文...

  • VUE+nginx代理到后端登录问题

    前端以Vue-element-admin为开发模板,后端为springboot,权限控制为shiro,前后端开发模...

  • 记一次给按钮加上权限的经历

    需求: 给系统所有按钮加上权限控制,有权限则显示,没有则隐藏。(顺提一下为什么不用disabled:因为本身的业务...

  • vue添加权限校验

    前端的权限校验可以分为菜单资源校验、接口资源和按钮资源校验。 菜单权限 把接口权限和按钮权限统称为资源权限,在数据...

  • js使用filter递归过滤树形结构数组

    今天遇到了这么一个问题,一个管理系统的前端使用vue,通过路由控制用户权限。由后端返回权限编码列表,前端菜单列表需...

  • React 克隆组件 ----- React.cloneElem

    上一周公司项目要求实现按钮级权限,简单来说就是需要通过后台数据绑定来控制前端页面哪些操作按钮需要渲染,哪些操作按钮...

网友评论

      本文标题:2024-06-19 vue前端按钮权限控制隐藏

      本文链接:https://www.haomeiwen.com/subject/uugfcjtx.html