摘要:路由不可見實現(xiàn)方法在中的字段中加入該路由的訪問權(quán)限列表字段。元素不可見實現(xiàn)方法因為某些頁面中會有一些特殊的接口調(diào)用或數(shù)據(jù)展示受到權(quán)限控制顯示。
在Vue項目中實現(xiàn)權(quán)限控制管理
對于一般稍大一些的后臺管理系統(tǒng),往往有很多個人員需要使用,而不同的人員也對應(yīng)了不同的權(quán)限系統(tǒng),后端的權(quán)限校驗保障了系統(tǒng)的安全性,而前端的權(quán)限校驗則提供了優(yōu)秀的交互體驗。
校驗方式前端對用戶的權(quán)限信息進(jìn)行校驗往往在兩個方面進(jìn)行限制
路由不可見
元素不可見
通過以上兩個方式,來將用戶權(quán)限之外的內(nèi)容隱藏掉。
路由不可見實現(xiàn)方法在router.js中的meta字段中加入該路由的訪問權(quán)限列表auths字段。
{ path: "edit", name: "edit", meta: { title: "編輯賬戶", auths:["edit_account"] }, component: () => import("pathToComponent/component.vue"), },
Vue.router中提供了導(dǎo)航守衛(wèi),我們這里使用全局前置守衛(wèi)對路由跳轉(zhuǎn)進(jìn)行權(quán)限校驗
router.beforeEach(to,from,next)
參數(shù)to是即將進(jìn)入的路由對象,我們可以在對象中拿到之前在router.js中定義的route對象,并獲得auths字段
router.beforeEach((to,from,next)=>{ const hasAuth = function(needAuths,haveAuths){ //判斷用戶是否擁有權(quán)限的function // implement } const havaAuths = []; // 用戶擁有的權(quán)限列表 if(!hasAuth(to.meta.auths,haveAuths)){ //沒有權(quán)限重定位到其他頁面,往往是401頁面 next({replace:true,name:"otherRouteName"}) } //權(quán)限校驗通過,跳轉(zhuǎn)至對應(yīng)路由 next(); })
在有側(cè)邊欄的后臺管理中,還需要對側(cè)邊欄的路由導(dǎo)航進(jìn)行隱藏,這里同樣是通過拿到route.meta.auths字段進(jìn)行過濾。
元素不可見實現(xiàn)方法因為某些頁面中會有一些特殊的接口調(diào)用或數(shù)據(jù)展示受到權(quán)限控制顯示。前端通過控制元素的展示來隱藏掉用戶不具有權(quán)限的元素,避免點擊了某一個button導(dǎo)致接口401報錯這樣不友好的交互體驗。
全局注冊一個directive。
//acl.js const aclDirective = { inserted:function(el,binding){ // 在被綁定的元素插入到dom中時 const hasAuth = function(needAuths,haveAuths){ //判斷用戶是否擁有權(quán)限的function // implement } const havaAuths = []; // 用戶擁有的權(quán)限列表 if(!hasAuth(binding.value,haveAuths)){ //binding.value 可以獲得綁定指令時傳入的參數(shù) el.style = "display:none"; //修改元素的可見狀態(tài) } } } //main.js Vue.directive("acl",aclDirective); //全局注冊指令
在需要控制顯示的組件上我們就可以通過v-acl進(jìn)行權(quán)限控制
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/54216.html
摘要:路由不可見實現(xiàn)方法在中的字段中加入該路由的訪問權(quán)限列表字段。元素不可見實現(xiàn)方法因為某些頁面中會有一些特殊的接口調(diào)用或數(shù)據(jù)展示受到權(quán)限控制顯示。 在Vue項目中實現(xiàn)權(quán)限控制管理 對于一般稍大一些的后臺管理系統(tǒng),往往有很多個人員需要使用,而不同的人員也對應(yīng)了不同的權(quán)限系統(tǒng),后端的權(quán)限校驗保障了系統(tǒng)的安全性,而前端的權(quán)限校驗則提供了優(yōu)秀的交互體驗。 校驗方式 前端對用戶的權(quán)限信息進(jìn)行校驗往往...
摘要:我們將登錄按鈕上綁上事件,點擊登錄之后向服務(wù)端提交賬號和密碼進(jìn)行驗證。所以前端和后端權(quán)限的劃分是不太一致。側(cè)邊欄最后一個涉及到權(quán)限的地方就是側(cè)邊欄,不過在前 完整項目地址:vue-element-admin 系列文章: 手摸手,帶你用vue擼后臺 系列一(基礎(chǔ)篇) 手摸手,帶你用vue擼后臺 系列二(登錄權(quán)限篇) 手摸手,帶你用vue擼后臺 系列三 (實戰(zhàn)篇) 手摸手,帶你用vu...
摘要:按鈕方面按鈕通過自定義指令綁定其特定的操作接口信息如產(chǎn)品上傳按鈕,需要擁有產(chǎn)品上傳的信息,才可以繼續(xù)執(zhí)行按鈕的業(yè)務(wù)邏輯。 開篇啰嗦幾句 在傳統(tǒng)單體項目中,通常會有一些框架用來管理熟知的權(quán)限。如耳濡目染的 Shiro 或者 Spring Security 。然而,到了現(xiàn)在這個時代,新開始的項目會更多的才用后端微服務(wù) + 前端 mvvm 的架構(gòu)開始書寫項目。權(quán)限控制方面將變得有些許晦澀。當(dāng)...
閱讀 2907·2021-11-11 16:55
閱讀 954·2021-09-28 09:36
閱讀 3805·2021-09-22 15:22
閱讀 2238·2021-09-06 15:12
閱讀 1771·2021-08-19 10:55
閱讀 2895·2019-08-30 12:52
閱讀 502·2019-08-29 14:03
閱讀 1210·2019-08-29 12:27