首页 > 其他分享 >vue后台用户路由权限和按钮权限实现原理

vue后台用户路由权限和按钮权限实现原理

时间:2024-06-04 22:13:22浏览次数:27  
标签:vue const name value 按钮 权限 路由

概论

  • 主要是通过一个唯一标识name或者id来过滤判断用户所处的角色是否有路由的权限或者按钮的权限
  • 一般路由都有一个一个name可以作为唯一标识
  • 一般按钮的话,可以自定义一个name作为标识
业务逻辑

后台通过选中路由或者按钮给角色,代表这个角色有数组中name[]的权限,用户或者部门再绑定角色,实现权限的管理
image

路由过滤方式

通过路由守卫事件过滤权限路由,核心之处就是唯一标识name过滤
如下示例代码:
image

按钮权限实现方式:通过自定义指令过滤按钮是否显示来实现按钮权限

示例代码:

// permission.ts
// 引入vue中定义的指令对应的类型定义
import { Directive } from 'vue'
export const permission: Directive = {
  // mounted是指令的一个生命周期
  mounted(el, binding) {
    // value 获取用户使用自定义指令绑定的内容
    const { value } = binding
    // 获取用户所有的权限按钮
    const permissionBtn = wsCache.get('permission')
    // 判断用户使用自定义指令,是否使用正确了
    if (value && value instanceof Array && value.length > 0) {
      const permissionFunc = value
      //判断传递进来的按钮权限,用户是否拥有
      //Array.some(), 数组中有一个结果是true返回true,剩下的元素不会再检测
      const hasPermission = permissionBtn.some((btnName: any) => {
        return permissionFunc.includes(btnName)
      }) 
       // 当用户没有这个按钮权限时,设置隐藏/移除这个按钮
      if (!hasPermission) {
        el.style.display = 'none'
        // el.parentNode.removeChild(el);
      }
    } else {
      throw new Error('need roles! Like v-permission="[\'admin\',\'editor\']"')
    }
  }
}


上面代码的核心就是:

const hasPermission = permissionBtn.some((btnName: any) => {
        return permissionFunc.includes(btnName)
      })

有权限则自定义指令让这个按钮显示,没权限则不让显示

总结

权限管理的核心就是通过一个类似allowRoutes:name:string[] 和 一个allowBtns:name:string[] 绑定给角色,通过允许的name去过滤路由或者按钮

标签:vue,const,name,value,按钮,权限,路由
From: https://www.cnblogs.com/jocongmin/p/18231880

相关文章

  • vue-router 源码分析——2. router-link 组件是如何实现导航的
    这是对vue-router3版本的源码分析。本次分析会按以下方法进行:按官网的使用文档顺序,围绕着某一功能点进行分析。这样不仅能学习优秀的项目源码,更能加深对项目的某个功能是如何实现的理解。这个对自己的技能提升,甚至面试时的回答都非常有帮助。在围绕某个功能展开讲解时,所......
  • 基于SpringBoot+Vue的足球社区管理系统(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 基于SpringBoot+Vue的医院住院管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • Vue3单文件组件实现省市区县三级联动
    Provinces.vue<template>  <divclass="select-container">    <selectv-model="selectedProvince"@change="handleProvinceChange">      <optionvalue=""disabled>请选择省份</opti......
  • 基于springboot-vue的毕业论文管理系统(11728)
     有需要的同学,源代码和配套文档领取,加文章最下方的名片哦一、项目演示二、资料项目演示视频介绍完整源代码(前后端源代码+SQL脚本)配套文档(LW+PPT+开题报告)远程调试控屏包运行三、技术介绍Java语言SSM框架SpringBoot框架Vue框架JSP页面Mysql数据库IDEA/Eclipse开发四、项......
  • springboot+vue+mybatis学生奖惩管理系统+PPT+论文+讲解+售后
    在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对学生奖惩信息管理的提升,也为了对学生奖惩信息进行更好的维护,学生奖惩管理系统的出现就变得水到渠成不可缺少。通过对......
  • springboot+vue+mybatis大学生就业管理系统+PPT+论文+讲解+售后
    现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本学生就业管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事......
  • Vue.js 动画与过渡效果实战
    title:Vue.js动画与过渡效果实战date:2024/6/4updated:2024/6/4description:这篇文章介绍了如何在网页设计中使用过渡动画和组件效果,以及如何利用模式和列表展示信息。还提到了使用钩子实现组件间通信的方法。categories:前端开发tags:过渡动画组件效果模式......
  • 电影交流|基于SprinBoot+vue的电影交流平台小程序系统(源码+数据库+文档)
     电影交流平台目录目录基于SprinBoot+vue的电影交流平台小程序系统 一、前言 二、系统设计三、系统功能设计 1用户信息管理2电影信息管理3公告信息管理4论坛信息管理四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:......
  • Java毕业设计 基于springboot vue大学新生报到系统
    Java毕业设计基于springbootvue大学新生报到系统SpringBoot大学新生报到系统功能介绍首页图片轮播报道流程流程详情校园公告公告详情登录注册个人中心更新信息学生后台登录个人中心修改密码个人信息学生报到班级分配宿舍分配缴费信息管理员登录个......