vue 判断用户是否有该功能权限(例如编辑删除)

如题,想要根据接口返回的权限数组判断当前用户是否拥有该功能的权限 如果没有就隐藏table中该功能,想知道怎么实现
朋友提出一个办法:
可以将权限清单放到顶层组件中(provide),页面使用 (inject),或者做个全局minxes ,页面直接 v-if="[...].includes('key')"

回答

根据后台返回来的字段做判断显示隐藏

1、注册到全局,同你朋友提出的一样。缺点:不用的页面中也会有
2、单个页面单独引用判断。缺点:每次都需要引用

方法都可行,就看你自己怎么用着方便怎么来吧

我的做法是通过指令实现,我个人觉得控制显隐不太友好,可能会让人觉得是没有该功能,而不是自己的权限不足所导致,我的处理是置灰并文字提示
<el-button v-perm="$hasPerm('info:add')">新建</el-button>
$hasPerm是挂载到全局的判断方法,判断当前权限是否在权限数组中,返回一个布尔值
v-perm是自定义的指令
实现效果如图
20200709150304.jpg

v-perm指令代码如下,代码只做了el-button的处理

export default {

inserted(el, binding) {

if (!binding.value) {

const cover = document.createElement('div')

el.parentNode.replaceChild(cover, el)

cover.appendChild(el)

// el-button的处理

if (hasClass(el, 'el-button')) {

addClass(el, 'is-disabled')

// 使用innerHTML,会移除所有事件,即无权限时所有事件交互无效

const res = Vue.compile(`<el-tooltip class="item" effect="dark" content="权限不足,请联系管理员" placement="top-start">

${cover.innerHTML}

</el-tooltip>`)

const Tooltip = Vue.extend({

render: res.render

})

const tooltipIns = new Tooltip().$mount()

empty(cover)

cover.parentNode.replaceChild(tooltipIns.$el, cover)

}

}

}

}

以上是 vue 判断用户是否有该功能权限(例如编辑删除) 的全部内容, 来源链接: utcz.com/p/30965.html

回到顶部