国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

Vue項目實現簡單的權限控制管理功能

2024-05-06 15:36:55
字體:
來源:轉載
供稿:網友

在Vue項目中實現權限控制管理

對于一般稍大一些的后臺管理系統,往往有很多個人員需要使用,而不同的人員也對應了不同的權限系統,后端的權限校驗保障了系統的安全性,而前端的權限校驗則提供了優秀的交互體驗。

校驗方式

前端對用戶的權限信息進行校驗往往在兩個方面進行限制

路由不可見 元素不可見

通過以上兩個方式,來將用戶權限之外的內容隱藏掉。

路由不可見實現方法

在router.js中的meta字段中加入該路由的訪問權限列表

{  path: 'edit',  name: 'edit',  meta: {    title: '編輯賬戶',    auths:['edit_account']  },  component: () => import('pathToComponent/component.vue'),},

Vue.router中提供了導航守衛,我們這里使用 全局前置守衛 對路由跳轉進行權限校驗

router.beforeEach(to,from,next)

參數 to 是即將進入的路由對象,我們可以在對象中拿到之前在router.js中定義的 route 對象,并獲得 auths 字段

router.beforeEach((to,from,next)=>{  const hasAuth = function(needAuths,haveAuths){   //判斷用戶是否擁有權限的function    // implement   }  const havaAuths = []; // 用戶擁有的權限列表  if(!hasAuth(to.meta.auths,haveAuths)){    //沒有權限重定位到其他頁面,往往是401頁面    next({replace:true,name:'otherRouteName'})  }  //權限校驗通過,跳轉至對應路由  next();})

在有側邊欄的后臺管理中,還需要對側邊欄的路由導航進行隱藏,這里同樣是通過拿到 route.meta.auths 字段進行過濾。

元素不可見實現方法

因為某些頁面中會有一些特殊的接口調用或數據展示受到權限控制顯示。前端通過控制元素的展示來隱藏掉用戶不具有權限的元素,避免點擊了某一個button導致接口401報錯這樣不友好的交互體驗。

全局注冊一個directive, directive官網介紹 。

//acl.jsconst aclDirective = {  inserted:function(el,binding){ // 在被綁定的元素插入到dom中時    const hasAuth = function(needAuths,haveAuths){ //判斷用戶是否擁有權限的function      // implement     }    const havaAuths = []; // 用戶擁有的權限列表    if(!hasAuth(binding.value,haveAuths)){ //binding.value 可以獲得綁定指令時傳入的參數      el.style = "display:none"; //修改元素的可見狀態    }  }}//main.jsVue.directive('acl',aclDirective); //全局注冊指令

在需要控制顯示的組件上我們就可以通過 v-acl 進行權限控制

<button v-acl="['edit_access']">編輯賬戶</button>

總結

以上所述是小編給大家介紹的Vue項目實現簡單的權限控制管理功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對錯新站長站網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 图木舒克市| 西充县| 吉隆县| 蓬溪县| 游戏| 留坝县| 锡林浩特市| 敦煌市| 天柱县| 喀喇沁旗| 涿鹿县| 茂名市| 凤山市| 赤峰市| 上饶市| 铜鼓县| 县级市| 汉中市| 枣庄市| 安岳县| 吴桥县| 新津县| 九台市| 鄂伦春自治旗| 锦州市| 广河县| 绵竹市| 静乐县| 固镇县| 余干县| 黑山县| 祁连县| 康马县| 神农架林区| 榕江县| 克拉玛依市| 江山市| 彭州市| 黑龙江省| 乡城县| 玉树县|