Vue element-admin權(quán)限控制之按鈕使用
Vue element-admin權(quán)限控制之按鈕
在項(xiàng)目中一般的權(quán)限控制都是精確到按鈕的分配,那么在 elemen-admin中如何實(shí)現(xiàn)這一操作呢
第一步
需要?jiǎng)?chuàng)建 hasPermi.js 當(dāng)然名稱可以自定義這個(gè)js文件是做權(quán)限的匹配的
/**
* v-hasPermi 操作權(quán)限處理
*/
import store from '@/store'
function checkPermission(el, binding) {
const { value } = binding
//通用權(quán)限測(cè)試用的偷懶的寫法
const all_permission = "*:*:*"; //此處定義的是權(quán)限的 格式:'system:sysUser:edit'
const roles = store.getters && store.getters.permissions
if (value && value instanceof Array) {
if (value.length > 0) {
const permissionRoles = value
const hasPermission = roles.some(role => {
//這里如果是包含 或者 是上面的通配符號(hào)就放行顯示(當(dāng)然 生產(chǎn)環(huán)境是不能加這個(gè)通配符的)
return all_permission === role || permissionRoles.includes(role)
})
if (!hasPermission) {
el.parentNode && el.parentNode.removeChild(el)
}
}
} else {
throw new Error(`need roles! Like v-permission="['admin','editor']"`)
}
}
export default {
//被綁定元素插入父節(jié)點(diǎn)時(shí)調(diào)用(父節(jié)點(diǎn)存在即可調(diào)用,不必存在于 document 中)。
inserted(el, binding) {
checkPermission(el, binding)
},
// 被綁定元素所在的模板更新時(shí)調(diào)用,而不論綁定值是否變化
update(el, binding) {
checkPermission(el, binding)
}
}第二步
在創(chuàng)建一個(gè)index.js 來(lái)在Vue 中全局使用
import permission from './hasPermi'
const install = function(Vue) {
Vue.directive('permission', permission)
}
/**
* 按鈕權(quán)限
*/
if (window.Vue) {
window['permission'] = permission
Vue.use(install); // eslint-disable-line
}
permission.install = install
export default permission
最后看看頁(yè)面怎么使用 沒(méi)錯(cuò) 優(yōu)雅的使用 v-permission
<template slot-scope="scope">
<el-button type="text" size="small"
icon="el-icon-edit"
v-permission="['system:sysUser:edit']"
@click="updateInfo(scope.row)">修改</el-button>
</template>效果 : 當(dāng)用戶權(quán)限不包含 system:sysUser:edit時(shí) 修改按鈕隱藏


包含時(shí)就會(huì)顯示出來(lái)

注:最好后端的接口請(qǐng)求上面加上權(quán)限再一次校驗(yàn),防止后端已經(jīng)更新用戶權(quán)限,前端沒(méi)有刷新導(dǎo)致沒(méi)有生效??梢钥柯?aop 加注解的模式 這里就不多說(shuō)了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue源碼之關(guān)于vm.$delete()/Vue.use()內(nèi)部原理詳解
這篇文章主要介紹了Vue源碼之關(guān)于vm.$delete()/Vue.use()內(nèi)部原理詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
vue-editor-bridge報(bào)錯(cuò)的解決方案
這篇文章主要介紹了vue-editor-bridge報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
vue多級(jí)復(fù)雜列表展開(kāi)/折疊及全選/分組全選實(shí)現(xiàn)
這篇文章主要介紹了vue多級(jí)復(fù)雜列表展開(kāi)/折疊及全選/分組全選實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
vue調(diào)取電腦攝像頭實(shí)現(xiàn)拍照功能
這篇文章主要為大家詳細(xì)介紹了vue調(diào)取電腦攝像頭實(shí)現(xiàn)拍照功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
VUE 常規(guī)截取和特殊字符之前之后截取(實(shí)例代碼)
這篇文章主要介紹了VUE 常規(guī)截取和特殊字符之前之后截取,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-10-10
關(guān)于element?ui中的el-scrollbar橫向滾動(dòng)問(wèn)題
這篇文章主要介紹了關(guān)于element?ui中的el-scrollbar橫向滾動(dòng)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08

