vue-element-admin按鈕級(jí)權(quán)限管控的實(shí)現(xiàn)
隨著軟件的發(fā)展,網(wǎng)站從最初的滿足用戶業(yè)務(wù)需求到提升用戶。就比如一個(gè)按鈕只要求權(quán)限方面的管控我們可以通過(guò) shiro,注解等方式來(lái)實(shí)現(xiàn),但是頁(yè)面上用戶點(diǎn)擊后沒(méi)反應(yīng)或者點(diǎn)擊后彈框沒(méi)權(quán)限,這顯然不是一個(gè)好的用戶體驗(yàn),因此通過(guò)前端來(lái)實(shí)現(xiàn)權(quán)限管控也是很有必要的。
思路
1.獲取按鈕權(quán)限
2.按鈕權(quán)限保存在前端全局中 vuex
3.頁(yè)面加載按鈕時(shí)通過(guò)判斷權(quán)限的存在與否,控制按鈕的顯示隱藏或者樣式選擇
PS:事實(shí)證明,思路清晰,實(shí)現(xiàn)起來(lái)就很容易,沒(méi)幾行代碼
表結(jié)構(gòu)與數(shù)據(jù)
就表結(jié)構(gòu)方面設(shè)計(jì)上不管有哪些字段,我們需要一個(gè)字段來(lái)存儲(chǔ)唯一權(quán)限,其他都是浮云,如圖

打印看看獲取到的數(shù)據(jù)

可以看到我只返回了權(quán)限數(shù)組,因?yàn)槠渌侄螞](méi)有意思,當(dāng)然直接返回對(duì)象也是 ok 的
實(shí)現(xiàn)
先來(lái)添加下 vuex 全局變量,方便后面獲取到按鈕權(quán)限后進(jìn)行存儲(chǔ)
/src/store/modules/user
新增 button 全局變量,并在新增 mutations 操作 button


為啥是在這,因?yàn)榘粹o的權(quán)限是屬于每個(gè)用戶的
/src/store/getters
使用時(shí)我們一般需要通過(guò)這個(gè)東西來(lái)獲取全局變量中的值
這個(gè) state.user.button 以我的理解就是上圖中 user 對(duì)象下的 button

/src/store/modules/user
回到 user 文件,現(xiàn)在我們可以把取到的 button 權(quán)限放到全局變量中就行了

做過(guò)權(quán)限模塊的都知道這個(gè) GetUserInfo 方法,每次緩存失效后,都會(huì)調(diào)用這個(gè)方法去獲取必要的用戶信息,這里按鈕權(quán)限我也是在這里直接返回獲取。
如果說(shuō)你的按鈕權(quán)限時(shí)單獨(dú)寫(xiě)的,你也可以在這個(gè)文件里寫(xiě)個(gè)獲取的方法,然后再 permission 文件里去調(diào)用,如圖

當(dāng)然我不太建議單獨(dú)去獲取,因?yàn)橛捎趘ue自身特性的原因,vuex中的數(shù)據(jù)在頁(yè)面刷新之后其中的數(shù)據(jù)會(huì)初始化,也就是數(shù)據(jù)沒(méi)了,這個(gè)時(shí)候就會(huì)去調(diào)用后臺(tái)去獲取數(shù)據(jù),如果每次都去單獨(dú)獲取,在高并發(fā)等情況下這種頻繁的重復(fù)數(shù)據(jù)的請(qǐng)求會(huì)給數(shù)據(jù)庫(kù)帶來(lái)巨大的壓力,因此像一些用戶權(quán)限數(shù)據(jù),我比較建議在登陸時(shí)統(tǒng)一獲取后保存到 redis 這種地方,以后的請(qǐng)求都只需要從 redis 取就可以了,效率上也會(huì)得到巨大的提升。
按鈕調(diào)用

調(diào)用就很簡(jiǎn)單了,直接獲取全局中的權(quán)限,用 v-if 判斷是否包含這個(gè)按鈕就行了,includes 后面的字符串就是對(duì)應(yīng)這個(gè)按鈕的權(quán)限
PS:如果存儲(chǔ)起來(lái)的不是這種簡(jiǎn)單的字符串?dāng)?shù)組,也可以改為 some 函數(shù)去判斷
到此這篇關(guān)于vue-element-admin按鈕級(jí)權(quán)限管控的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)vue-element-admin按鈕權(quán)限內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
前端vue3手動(dòng)設(shè)置滾動(dòng)條位置/自動(dòng)定位詳細(xì)代碼
這篇文章主要給大家介紹了關(guān)于前端vue3手動(dòng)設(shè)置滾動(dòng)條位置/自動(dòng)定位的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)學(xué)習(xí)或者使用vue3具有一定的參考解決價(jià)值,需要的朋友可以參考下2024-05-05
VUE2舊項(xiàng)目重新安裝依賴后@vue/compiler-sfc編譯報(bào)錯(cuò)問(wèn)題
在VUE2舊項(xiàng)目中重新安裝依賴后,如果遇到@vue/compiler-sfc編譯報(bào)錯(cuò),首先需要檢查package.json文件中的Vue版本是否升級(jí)到2.7版本,2.7版本的編譯插件不再支持/deep/這種樣式穿透,版本^和~的區(qū)別在于^只能鎖住第一位數(shù)2025-01-01
Vue.js實(shí)現(xiàn)watch屬性的示例詳解
本文討論了watch函數(shù)是如何利用副作用函數(shù)和options進(jìn)行封裝實(shí)現(xiàn)的,也通過(guò)調(diào)度函數(shù)去控制回調(diào)函數(shù)的立即執(zhí)行和執(zhí)行時(shí)機(jī),還可以解決競(jìng)態(tài)問(wèn)題,感興趣的可以了解一下2022-04-04
在Vue中使用Echarts實(shí)例圖的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于如何在Vue中使用Echarts實(shí)例圖的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
vue項(xiàng)目在運(yùn)行npm run build時(shí)卡住不動(dòng)問(wèn)題及解決方案
這篇文章主要介紹了vue項(xiàng)目在運(yùn)行npm run build時(shí)卡住不動(dòng)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
使用Vue 實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼功能
本文章主要來(lái)介紹一下第一個(gè)階段,也就是前端校驗(yàn)的驗(yàn)證碼的實(shí)現(xiàn),下面來(lái)介紹一下拖動(dòng)驗(yàn)證碼的具體實(shí)現(xiàn)。這篇文章主要介紹了利用 Vue 實(shí)現(xiàn)滑動(dòng)驗(yàn)證碼,需要的朋友可以參考下2019-06-06
vue項(xiàng)目使用luckyexcel預(yù)覽excel表格功能(心路歷程)
這篇文章主要介紹了vue項(xiàng)目使用luckyexcel預(yù)覽excel表格,我總共嘗試了2種方法預(yù)覽excel,均可實(shí)現(xiàn),還發(fā)現(xiàn)一種方法可以實(shí)現(xiàn),需要后端配合,叫做KKfileview,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10
解決vue安裝less報(bào)錯(cuò)Failed to compile with 1 errors的問(wèn)題
這篇文章主要介紹了解決vue安裝less報(bào)錯(cuò)Failed to compile with 1 errors的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10
Vue項(xiàng)目build后,圖片加載不出來(lái)的解決
這篇文章主要介紹了Vue項(xiàng)目build后,圖片加載不出來(lái)的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03

