广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue实现前端按钮组件权限管理
  • 897
分享到

vue实现前端按钮组件权限管理

2024-04-02 19:04:59 897人浏览 安东尼
摘要

目录方案1:数组+自定义指令关于路由权限方案2: 二进制表达权限:权限判断判断和使用小结方案1:数组+自定义指令 把权限放到数组中,通过Vue的自定义指令来判断是否拥有该权限,有则显

方案1:数组+自定义指令

把权限放到数组中,通过Vue的自定义指令来判断是否拥有该权限,有则显示,反之则不显示

我们可以把这个按钮需要的权限放到组件上

<el-button
  v-hasPermi="['home:advertising:update']"
>新建</el-button>

自定义指令:

逻辑就是我们在登陆后会获取该用户的权限,并存储到localStorage中,当一个按钮展示时会判断localStorage存储的权限列表中是否存在该按钮所需的权限。


​
export default {
  inserted(el, binding, vnode) {
    const { value } = binding;
    const SuperPermission = "superAdmin"; // 超级用户,用于开发测试
    const permissions = localStorage.getItem('userPermissions')&& localStorage.getItem('userPermissions').split(',');
    // 判断传入的组件权限是否符合要求
    if (value && value instanceof Array && value.length > 0) {
      const permissionFlag = value;
      const hasPermissions = permissions && permissions.some(permission => all_permission === permission || permissionFlag.includes(permission));
      // 判断是否有权限是否要展示
      if (!hasPermissions) {
        el.parentNode && el.parentNode.removeChild(el);
      }
    } else {
      throw new Error(`请设置操作权限标签值`);
    }
  },
};

注册权限

import Vue from 'vue';
import Vpermission from "./permission";
// 按钮权限 自定义指令
Vue.directive('permission', Vpermission);

关于路由权限

数组的方案也可以用到菜单权限上,可以在路由的meta中携带该路由所需的权限,例如:

const router = [{
  path: 'needPermissionPage',
  name: 'NeedPermissionPage',
  meta: {
    role: ['permissionA', 'permissionB'],
  },
}]

这个时候就需要在渲染权限的时候动态渲染了,该方案可以看一下其他的文章或成熟的项目,写的非常好

方案2: 二进制

通过二进制来控制权限:

假设我们有增删改查四个基本权限:

const UPDATE = 0b000001;
const DELETE = 0b000010;
const ADD = 0b000100;
const SEARCH = 0b001000;

每一位代表是否有该权限,有该权限则是1,反之是0

表达权限:

我们可以使用或运算来表达一个权限结果,或运算:两个任何一个为1,结果就为1

const reslut = UPDATE | DELETE | SEARCH;
console.log(reslut);  // 11

变成了十进制,我们可以通过toString方法变为二进制结果

const reslut = UPDATE | DELETE | SEARCH;
console.log(reslut.toString(2));  // 1011

result 这个结果就代表我们既拥有更新权限,同时也拥有删除和查询的权限

那么我们可以将十进制的reslut当作该用户的权限,把这个结果给后台,下次用户登陆后只需要返回这个结果就可以了。

权限判断

我们了解了如何表达一个权限,那如何做权限的判断呢?

可以通过且运算,且运算:两位都为1,这一位的结果才是1。

还是用上面的结果,当我们从接口中拿到了reslut,判断他是否有 DELETE 权限:

console.log((reslut & DELETE) === DELETE);  // true

是否有新增的权限

console.log((result & ADD) === ADD); // false

判断和使用


function hasPermission(permission) {
  const permissionList = {
    UPDATE: 0b000001,
    DELETE: 0b000010,
    CREATE: 0b000100,
    SEARCH: 0b001000
  }
  let btnPermission = permissionList[permission] ? permissionList[permission] : -1;
  if (btnPermission === -1) return false;
  const userPermission = localStorage.getItem('userPermissions');
  // 将本地十进制的值转换为二进制
  const userPermissionBinary = userPermission.toString(2);
  // 对比组件所需权限和本地存储的权限
  return (userPermissionBinary & btnPermission) === btnPermission;
}

直接在组件中通过v-show/v-if来控制是否展示

<el-button v-show="hasPermission('UPDATE')">更新</el-button>

小结

我理解来说,对于方案1来说,方案2的优势在于更简洁,后台仅需要存储一个十进制的值,但如果后期新增需求更新了新的权限,可能需要调整二进制的位数来满足业务需求。方案1的优势在于更加易懂,新增权限时仅需要更新组件自定义指令的数组。

以上就是vue实现前端按钮组件权限管理的详细内容,更多关于vue 前端按钮组件权限的资料请关注编程网其它相关文章!

--结束END--

本文标题: vue实现前端按钮组件权限管理

本文链接: https://www.lsjlt.com/news/167676.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue实现前端按钮组件权限管理
    目录方案1:数组+自定义指令关于路由权限方案2: 二进制表达权限:权限判断判断和使用小结方案1:数组+自定义指令 把权限放到数组中,通过vue的自定义指令来判断是否拥有该权限,有则显...
    99+
    2022-11-13
  • 精确到按钮级别前端权限管理实现方案
    目录这是产品提出的要求:旧的按钮权限控制:解决方案构思:方案优化具体实现核心代码这是产品提出的要求: 页面上的每一个按钮,都要可以通过角色权限来控制 当时的项目背景是一个零售系统的后...
    99+
    2022-11-13
  • vue-element-admin按钮级权限管控的实现
    目录思路表结构与数据实现按钮调用随着软件的发展,网站从最初的满足用户业务需求到提升用户。就比如一个按钮只要求权限方面的管控我们可以通过 shiro,注解等方式来实现,但是页面上用户点...
    99+
    2022-11-13
  • vue路由权限和按钮权限怎么实现
    这篇“vue路由权限和按钮权限怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue路由权限和按钮权限怎么实现”文章吧...
    99+
    2023-06-30
  • vue按钮怎么实现权限控制
    这篇文章主要讲解了“vue按钮怎么实现权限控制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue按钮怎么实现权限控制”吧!一、步骤1.定义buttom权限在state中创建buttomPe...
    99+
    2023-06-22
  • vue + vuex + directives如何实现权限按钮
    这篇文章主要介绍vue + vuex + directives如何实现权限按钮,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!遇到了一个业务场景:某个按钮按下去之前需要先判断它是否登陆...
    99+
    2022-10-19
  • vue路由权限和按钮权限的实现示例
    目录一 菜单路由权限二 按钮权限的实现一 菜单路由权限 1.1前端路由配置表 1.2后端数据返回 1.3 拿到数据后存到vuex  1.4 扁平化的目的是为了跳转路由...
    99+
    2022-11-13
  • vue基于Element按钮权限实现方案
    背景需求:ERP系统需增加 ”按钮权限控制“ 功能,对权限的控制粒度要普及到按钮层级。 预期 按钮权限控制的交互方式无非两种:"不可见" 和 "可见不可点"。 不可见 不可见...
    99+
    2022-11-12
  • uni app跨端自定义指令实现按钮权限
    目录前言准备目录结构chainWebpack 新增loader正则npm 包知识点loader 开发和调试定义最简单的LoaderLoader基础操作本地调试ResolveLoade...
    99+
    2022-12-08
    uni app跨端自定义按钮权限 uni app自定义按钮
  • Vue自定义v-has指令实现按钮权限判断
    应用场景 以后台管理系统为例,每个用户所拥有的按钮权限不一样。管理员配置权限之后,用户登录时,从接口拿到按钮权限列表,然后根据后台数据判断显示哪些按钮。 简单说一下,自定义指令 ...
    99+
    2022-11-12
  • uni-app跨端自定义指令实现按钮权限操作
    目录前言准备目录结构正则npm 包知识点loader 开发和调试定义最简单的LoaderLoader基础操作本地调试 ResolveLoader完整代码loaders/uni-per...
    99+
    2023-01-16
    uni-app按钮权限 uni-app跨端自定义指令 uni-app自定义指令
  • vue使用自定义指令实现按钮权限展示功能
    目录一、在src下新建directive文件夹二、定义index.js文件,在vue上注入自定义指令三、编写自定义指令四、使用一、在src下新建directive文件夹 二、定义i...
    99+
    2022-11-13
  • 权限管理模块中动态加载Vue组件怎么实现
    本篇内容介绍了“权限管理模块中动态加载Vue组件怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!登录状态保存当用户登录成功之后,需要将...
    99+
    2023-06-19
  • 前端配合后端实现Vue路由权限的方法实例
    目录前言实现思路代码实现登录本地路由列表生成路由挂载路由总结前言 在开发管理后台时,都会存在多个角色登录,登录成功后,不同的角色会展示不同的菜单路由。这就是我们通常所说的动态路由权限...
    99+
    2022-11-13
  • 基于Vue自定义指令如何实现按钮级权限控制
    这篇文章将为大家详细讲解有关基于Vue自定义指令如何实现按钮级权限控制,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。思路:登录:当用户填写完账号和密码后向服务端验证是否正...
    99+
    2022-10-19
  • vue怎么使用自定义指令实现按钮权限展示功能
    今天小编给大家分享一下vue怎么使用自定义指令实现按钮权限展示功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、在src...
    99+
    2023-06-30
  • Vue3纯前端实现Vue路由权限的方法详解
    目录前言RBAC模型代码实现登录菜单信息动态路由筛选总结前言 在开发管理后台时,都会存在多个角色登录,登录成功后,不同的角色会展示不同的菜单路由。这就是我们通常所说的动态路由权限,实...
    99+
    2022-11-13
  • Vue Element前端应用开发之功能点管理及权限控制
    目录概述1、权限功能点管理2、VUE+Element 前端权限控制概述 本篇随笔介绍功能点管理及权限控制,功能点是作为一个业务对象数据进行管理,在角色范畴上进行分配,而在界面元素控制...
    99+
    2022-11-12
  • SpringBoot和Vue.js实现的前后端分离的用户权限管理系统
    目录后端实现1. 数据库设计2. 创建 Maven 项目3. 配置数据库4. 创建实体类5. 创建 Repository6. 创建 Service7. 创建 Controller8....
    99+
    2023-05-14
    SpringBoot Vue.js用户权限管理系统 SpringBoot Vue.js前后端分离
  • SpringBoot和Vue.js怎么实现前后端分离的用户权限管理系统
    这篇文章主要介绍“SpringBoot和Vue.js怎么实现前后端分离的用户权限管理系统”,在日常操作中,相信很多人在SpringBoot和Vue.js怎么实现前后端分离的用户权限管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作