最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue項(xiàng)目實(shí)現(xiàn)簡(jiǎn)單的權(quán)限控制管理功能

 更新時(shí)間:2019年07月17日 08:40:04   作者:coderAfei  
這篇文章主要介紹了Vue項(xiàng)目實(shí)現(xiàn)簡(jiǎn)單的權(quán)限控制功能,文中給大家介紹了兩種方式進(jìn)行權(quán)限限制,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下

在Vue項(xiàng)目中實(shí)現(xiàn)權(quán)限控制管理

對(duì)于一般稍大一些的后臺(tái)管理系統(tǒng),往往有很多個(gè)人員需要使用,而不同的人員也對(duì)應(yīng)了不同的權(quán)限系統(tǒng),后端的權(quán)限校驗(yàn)保障了系統(tǒng)的安全性,而前端的權(quán)限校驗(yàn)則提供了優(yōu)秀的交互體驗(yàn)。

校驗(yàn)方式

前端對(duì)用戶的權(quán)限信息進(jìn)行校驗(yàn)往往在兩個(gè)方面進(jìn)行限制

  • 路由不可見(jiàn)
  • 元素不可見(jiàn)

通過(guò)以上兩個(gè)方式,來(lái)將用戶權(quán)限之外的內(nèi)容隱藏掉。

路由不可見(jiàn)實(shí)現(xiàn)方法

在router.js中的meta字段中加入該路由的訪問(wèn)權(quán)限列表

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

Vue.router中提供了導(dǎo)航守衛(wèi),我們這里使用 全局前置守衛(wèi) 對(duì)路由跳轉(zhuǎn)進(jìn)行權(quán)限校驗(yàn)

router.beforeEach(to,from,next)

參數(shù) to 是即將進(jìn)入的路由對(duì)象,我們可以在對(duì)象中拿到之前在router.js中定義的 route 對(duì)象,并獲得 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)){
    //沒(méi)有權(quán)限重定位到其他頁(yè)面,往往是401頁(yè)面
    next({replace:true,name:'otherRouteName'})
  }
  //權(quán)限校驗(yàn)通過(guò),跳轉(zhuǎn)至對(duì)應(yīng)路由
  next();
})

在有側(cè)邊欄的后臺(tái)管理中,還需要對(duì)側(cè)邊欄的路由導(dǎo)航進(jìn)行隱藏,這里同樣是通過(guò)拿到 route.meta.auths 字段進(jìn)行過(guò)濾。

元素不可見(jiàn)實(shí)現(xiàn)方法

因?yàn)槟承╉?yè)面中會(huì)有一些特殊的接口調(diào)用或數(shù)據(jù)展示受到權(quán)限控制顯示。前端通過(guò)控制元素的展示來(lái)隱藏掉用戶不具有權(quán)限的元素,避免點(diǎn)擊了某一個(gè)button導(dǎo)致接口401報(bào)錯(cuò)這樣不友好的交互體驗(yàn)。

全局注冊(cè)一個(gè)directive, directive官網(wǎng)介紹 。

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

在需要控制顯示的組件上我們就可以通過(guò) v-acl 進(jìn)行權(quán)限控制

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

總結(jié)

以上所述是小編給大家介紹的Vue項(xiàng)目實(shí)現(xiàn)簡(jiǎn)單的權(quán)限控制管理功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

最新評(píng)論

新闻| 淅川县| 东方市| 富宁县| 娄烦县| 镇赉县| 澜沧| 景德镇市| 明溪县| 日土县| 榆社县| 泰顺县| 大足县| 皋兰县| 榆社县| 奈曼旗| 铜山县| 同江市| 石城县| 巴彦淖尔市| 防城港市| 德阳市| 冷水江市| 普安县| 封开县| 昌乐县| 锡林浩特市| 凌海市| 甘泉县| 黄陵县| 武冈市| 西乌珠穆沁旗| 浮梁县| 伽师县| 遂川县| 孙吴县| 拉孜县| 象山县| 肥乡县| 淮阳县| 宜兰县|