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

首頁 > 編程 > JavaScript > 正文

基于Vue自定義指令實現按鈕級權限控制思路詳解

2019-11-19 13:47:35
字體:
來源:轉載
供稿:網友

思路:

  • 登錄:當用戶填寫完賬號和密碼后向服務端驗證是否正確,驗證通過之后,服務端會返回一個token,拿到token之后(我會將這個token存貯到sessionStorage中,保證刷新頁面后能記住用戶登錄狀態),前端會根據token再去拉取一個 user_info 的接口來獲取用戶的詳細信息(如用戶權限,用戶名等等信息)。
  • 權限驗證:通過token獲取用戶對應的 role,自定義指令,獲取路由meta屬性里btnPermissions( 注: meta.btnPermissions是存放按鈕權限的數組,在路由表里配置 ),然后判斷role是否在btnPermissions數組里,若不在即刪除該按鈕DOM。

按鈕權限也可以用v-if判斷,但是如果頁面過多,每個頁面頁面都要獲取用戶權限role和路由表里的meta.btnPermissions,然后再做判斷,感覺有點麻煩,而自定義指令,只需在權限按鈕加入該指令即可。

廢話不多說,上代碼...

路由配置:

path: '/permission',  component: Layout,  name: '權限測試',  meta: { btnPermissions: ['admin','supper','normal'] }, //頁面需要的權限  children: [   {    path: 'supper',    component: _import('system/supper'),    name: '權限測試頁',    meta: { btnPermissions: ['admin','supper'] } //頁面需要的權限   },   {    path: 'normal',    component: _import('system/normal'),    name: '權限測試頁',    meta: { btnPermissions: ['admin'] } //頁面需要的權限   }  ]

自定義指令:

import Vue from 'vue'/**權限指令**/const has = Vue.directive('has', { bind: function (el, binding, vnode) {  // 獲取按鈕權限  let btnPermissions = vnode.context.$route.meta.btnPermissions.split(",");  if (!Vue.prototype.$_has(btnPermissions)) {   el.parentNode.removeChild(el);  } }});// 權限檢查方法Vue.prototype.$_has = function (value) { let isExist = false; let btnPermissionsStr = sessionStorage.getItem("btnPermissions"); if (btnPermissionsStr == undefined || btnPermissionsStr == null) {  return false; } if (value.indexOf(btnPermissionsStr) > -1) {  isExist = true; } return isExist;};export {has}

然后在main.js文件引入文件

import has from './public/js/btnPermissions.js';

頁面中按鈕只需加v-has即可

<el-button @click='editClick' type="primary" v-has>編輯</el-button>

結語:

權限這種事需要前后端結合,前端盡可能的去控制,記住:永遠不相信用戶輸入!

以上所述是小編給大家介紹的基于Vue自定義指令實現按鈕級權限控制,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 三穗县| 图木舒克市| 宜黄县| 东宁县| 平泉县| 巴楚县| 读书| 宜良县| 张家港市| 贺兰县| 乌鲁木齐市| 万载县| 开鲁县| 波密县| 响水县| 兴义市| 获嘉县| 苏尼特右旗| 中方县| 仁怀市| 尉犁县| 天水市| 清水县| 碌曲县| 洮南市| 沁源县| 顺义区| 林芝县| 沭阳县| 阳原县| 喀什市| 若羌县| 红安县| 绥宁县| 南汇区| 成安县| 屏山县| 墨玉县| 开封市| 襄城县| 广丰县|