vue 按钮级权限控制

615 阅读1分钟

一.定义一个全局方法,配合v-if实现;

在用户登录成功后,获取用户的按钮权限(数组格式),存储到store中

定义公共函数hasPermission

image.png

在main.js中引入,

image.png

在需要的按钮上使用即可

image.png

二.自定义指令

directives 在全局main.js中注册

路由配置:

{       path:'/permission',

      component: Layout,

      meta: { btnPermissions: ['admin','supper','normal'] //页面需要的权限

},

自定义指令:

// 权限检查方法
const permissionCheck = (value) => {
    let isExist = false;
    let btnPermissionsStr = sessionStorage.getItem("btnPermissions");
    console.log(btnPermissionsStr)
    if (btnPermissionsStr == undefined || btnPermissionsStr == null) {
        return false;
    }
    if (value.indexOf(btnPermissionsStr) > -1) {
        isExist = true;
    }
    return isExist;
};

/**权限指令**/
export default {
    inserted: (el, binding, vnode) => {
        // 获取按钮权限
        let btnPermissions = vnode.context.$route.meta.btnPermissions.split(",");
        // let btnPermissions = binding.value;
        console.log(vnode.context.$route.meta.btnPermissions, btnPermissions, permissionCheck(btnPermissions))
        if (!permissionCheck(btnPermissions)) {
            el.parentNode.removeChild(el);
        }
    }
};

然后在main.js文件引入文件 import myDirectives from '@/directives';

Object.keys(myDirectives).forEach(item => { Vue.directive(item, mideaDirectives[item]) });