一般后端返回的用户信息,对应接口都有别名如下:
实现过程:
1.注册全局的自定义指令
import store from "../store"
//判断是否有别名
function hasPermission(value,el = false){
if(!Array.isArray(value)){
throw new Error(`需要配置权限,例如 v-permission="['getStatistics3,GET']"`)
}
const hasAuth = value.findIndex(v=>store.state.ruleNames.includes(v)) != -1
if(el && !hasAuth){
el.parentNode && el.parentNode.removeChild(el)
}
return hasAuth
}
export default {
install(app){
app.directive("permission",{
mounted(el,binding){
hasPermission(binding.value,el)
}
})
}
}
2.main.js中注册全局指令
3.拿到接口别名和后端返回的所有别名进行比较,有的话就留下该组件或者按钮等