后台管理系统按钮级别权限的实现原理

289 阅读1分钟

后台管理系统按钮级别权限的实现原理

指令的方式

  • 定义全局指令directive('has'),insert:(el,binding)
  • 用户登录后即可获取改用户的按钮级别权限数组btns;
  • 将按钮上v-has绑定的值传过来(binding.value);
  • 判断'PEMS_PATH_ABC'是否存在于btns中;
  • 不存在的话删除该元素,使该元素不能显示;
  • 只是前端的一层校验(不安全),需要后端二次校验。

附上源代码:

import Vue from 'vue'
// import { mapState } from 'vuex'
import store from '@/store'
// **权限指令**
Vue.directive('has', {
    inserted: (el, binding) => {
        const btns = store.state.info.limitsList
        const value = 'PEMS_PATH_' + binding.value.toUpperCase()
        if (btns.length > 0 && !btns.includes(value)) {
            el.parentNode.removeChild(el)
        }
    }
})
```
```