v-has是一个很方便的前端权限控制标签,但是只支持一个授权标识,如果需要两个或以上的权限与或运算就不支持了。
解决方案:
修改文件“@/utils/hasPermission.js”中的方法filterGlobalPermission
1、原代码如下:
...
//update--end--autor:wangshuai-----date:20200729------for:按钮权限,授权标识的提示信息是多个用逗号分隔逻辑处理 gitee#I1OUGU------
}
}
if (!permissions.includes(binding.value)) {
el.parentNode.removeChild(el);
}
}
2、修改如下:
...
//update--end--autor:wangshuai-----date:20200729------for:按钮权限,授权标识的提示信息是多个用逗号分隔逻辑处理 gitee#I1OUGU------
}
}
// 目前只支持全与、全或
// 含“||”
if (binding.value.includes("||")) {
let testPerms = binding.value.split("||");
for (let i = 0; i < testPerms.length; i++) {
if (permissions.indexOf(testPerms[i]) != -1) {
return;
}
}
el.parentNode.removeChild(el);
}
// 不含“||”,全按“&&”处理
else {
let testPerms = binding.value.split("&&");
for (let i = 0; i < testPerms.length; i++) {
if (permissions.indexOf(testPerms[i]) == -1) {
el.parentNode.removeChild(el);
}
}
}
}
3、局限
只支持全“&&”或全“||”,混合甚至带括号的太复杂,暂不支持。
解决思路,自己写个与或解析器(太高级了,得上编译原理中的有限自动机)。有点费脑子,有空再写。
JeecgBoot是个不错的低代码平台,但感觉有点重,纠结...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)