前言:关于权限的那些事!!!前端
路由权限可参考这位大神写的,很全面==>手摸手,带你用vue撸后台 系列二(登陆权限篇)vue
思路:node
按钮权限也能够用v-if判断,可是若是页面过多,每一个页面页面都要获取用户权限role和路由表里的meta.btnPermissions,而后再作判断,感受有点麻烦,而自定义指令,只需在权限按钮加入该指令便可。后端
废话很少说,上代码...数组
path: '/permission',
component: Layout,
name: '权限测试',
meta: { btnPermissions: ['admin','supper','normal'] }, //页面须要的权限
children: [
{
path: 'supper',
component: _import('system/supper'),
name: '权限测试页',
meta: { btnPermissions: ['admin','supper'] } //页面须要的权限
},
{
path: 'normal',
component: _import('system/normal'),
name: '权限测试页',
meta: { btnPermissions: ['admin'] } //页面须要的权限
}
]
复制代码
import Vue from 'vue'
/**权限指令**/
const has = Vue.directive('has', {
bind: function (el, binding, vnode) {
// 获取页面按钮权限
let btnPermissionsArr = vnode.context.$route.meta.btnPermissions;
if (!Vue.prototype.$_has(btnPermissionsArr)) {
el.parentNode.removeChild(el);
}
}
});
// 权限检查方法
Vue.prototype.$_has = function (value) {
let isExist = false;
// 获取用户按钮权限
let btnPermissionsStr = sessionStorage.getItem("btnPermissions");
if (btnPermissionsStr == undefined || btnPermissionsStr == null) {
return false;
}
if (value.indexOf(btnPermissionsStr) > -1) {
isExist = true;
}
return isExist;
};
export {has}
复制代码
import has from './public/js/btnPermissions.js';
复制代码
<el-button @click='editClick' type="primary" v-has>编辑</el-button>
复制代码
权限这种事情须要先后端结合,前端尽量的去控制,更多的须要后台判断。记住:永远不相信用户输入!bash
以上有不足的地方,欢迎在评论区多多指教!!!session