• Vue自定义指令完成按钮级别的权限判断


    权限指令,对按钮权限的控制

    1.登录成功后,获取后台返回所有的按钮权限,存到sessionStorage中( 也可以存到vuex )

    2.在main.js中自定义指令

    3.定义指令,如果用户含有此按钮权限,则在页面显示出来( v-has绑定进行逻辑判断 )


    登录成功后,获取后台返回所有的按钮权限,存到sessionStorage中

    // 4.5获取当前登录用户角色权限列表   这个方法在登录中调用
    roleUserInfo() {
      this.$ajax.get("/role/permissionlist").then(res => {
          sessionStorage.setItem("loginVal", JSON.stringify(res.data.data));
            setTimeout(() => {
              window.location.reload();
            }, 50);
          });
    }

    在main.js中自定义指令

    //inserted:被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)
    //如果bind获取不到el.parentNode
    //试试把 bind 改为 inserted
    const has = Vue.directive("has", {
        inserted: function(el, binding) {
            console.log(binding,"w")
            // 获取按钮权限// 获取按钮权限
            if (!Vue.prototype.$_has(binding.value)) {
                el.parentNode.removeChild(el);
            }
        }
    });
    //// 权限检查方法(且把该方法添加到vue原型中)
    Vue.prototype.$_has = function(value) {
        let isExit = false;
        let buttonpermsStr = JSON.parse(sessionStorage.getItem("loginVal"));
        
        if (buttonpermsStr === undefined || buttonpermsStr=== null) {
            return false;
        }
        for (let i = 0; i < buttonpermsStr.length; i++) {
            let buttonpermsStrId = buttonpermsStr[i]
          if (buttonpermsStrId.code == value) {//要拿数据中不变的并且可以使用的字段进行判断,不可以使用id isExit = true; break; } } return isExit; }; export { has };

    定义指令,如果用户含有此按钮权限,则在页面显示出来( v-has绑定进行逻辑判断 )

    <!-- 在按钮上直接写上v-has="后台返回的按钮id" -->
    <Button v-has="'add'">查看</Button>
  • 相关阅读:
    一道简单的递推题(快速幂+矩阵乘法优化+滚动数组)
    玲珑OJ 1129
    (转)Python函数式编程——map()、reduce()
    在windows中安装两个不同版本的Python
    Python 安装 pytesser 处理验证码出现的问题
    Python爬虫之HDU提交数据
    Python SGMLParser 的1个BUG??
    CF622F:The Sum of the k-th Powers
    LuoGuP3321:[SDOI2015]序列统计
    卡马克开方膜拜笔记
  • 原文地址:https://www.cnblogs.com/home-/p/11888720.html
Copyright © 2020-2023  润新知