Vue 專案實現按鈕級別許可權管理

Shellming發表於2019-04-23

在專案中經常有需求要根據使用者的許可權對介面上的元素進行控制,這裡介紹了一直簡單的實現,僅供參考。

當前使用者的許可權列表儲存在 store 裡,也可以是其他地方。

指令

// src/directives/permission.js
import Vue from 'vue';
import store from '@/store';
import {get} from '@/utils';

// 是否有許可權
const hasPermission = userPermission => {
    let userPermissionList = Array.isArray(userPermission) ? userPermission : [userPermission];
    // 當前使用者的許可權列表
    let permissionList = get(store, 'getters["user/permission"]', []);
    return userPermissionList.some(e => permissionList.includes(e));
};

// 指令
Vue.directive('per', {
    bind: (el, binding, vnode) => {
        if (!hasPermission(binding.value)) {
            el.parentNode.removeChild(el);
        }
    }
});

// 全域性判斷方法
Vue.prototype.$_has = hasPermission;
複製程式碼

使用方法

mian.js 引入

<div v-per="[admin]">
    admin 可見
    是否為admin:{{$_has('admin')}}   //true
<div>
複製程式碼

本文作者: Shellming
本文連結: shellming.com/2019/04/23/…
版權宣告: 本部落格所有文章除特別宣告外,均採用 CC BY-NC-SA 3.0 許可協議。轉載請註明出處!

相關文章