国产探花免费观看_亚洲丰满少妇自慰呻吟_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自定義指令實現按鈕級權限控制,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东平县| 淅川县| 北碚区| 郴州市| 个旧市| 石嘴山市| 天镇县| 洛浦县| 临西县| 博野县| 柳河县| 炎陵县| 蕲春县| 富民县| 三亚市| 松阳县| 汾阳市| 石屏县| 四子王旗| 五台县| 旺苍县| 兰溪市| 喀喇| 抚顺县| 五指山市| 合阳县| 满洲里市| 金坛市| 增城市| 海南省| 博爱县| 庆云县| 淅川县| 包头市| 图木舒克市| 外汇| 浙江省| 马龙县| 平凉市| 镶黄旗| 伊金霍洛旗|