动态路由权限,按钮的权限,菜单权限分别是怎么实现的

2023-11-06

首先什么是前端权限控制:

就是当用户登录之后,根据不用用户拥有的权限动态添加(addRoutes)用户能访问的路由页面和能看到的菜单页面(v-for)

动态路由权限:

1.本质就是利用addRoutes这个api来实现动态添加路由权限,然后还可以根据路由权限渲染用户可以看到的菜单选项

2.前端来维护两份路由表 ,一份静态路由表这个是所有用户都可以访问的,一份是动态路由表,那么默认挂载的只有静态路由表

3.用户登录成功之后会得到一个路由权限列表,我们就可以根据这个权限列表对动态路由表进行筛选(filter) 吧筛选之后的路由用addRoutes追加到路由表中。相当于数组的push方法

菜单权限:

也是根据筛选出来的动态路由表加上静态路由表,用v-for循环渲染出用户可以看到的菜单选项(可以通过vuex用getter获取到筛选过后的数据)

按钮的权限:

方法1.因为按钮权限不止一个页面会用到 ,所以可以用mixin做一个全局混入效果,封装一个mixin的组件然后通过vue.mixin全局混入,mixin里面可以定义一个methods,里面再封装一个方法,方法接收一个参数,拿到这个参数会去用户的按钮权限点列表筛选( 可以用数组的includes)看看这个参数用户的权限列表中是否存在,返回的是布尔值 ,如果存在就说明用户有这个按钮的操作权限,如果不存在就说明用户没有这个权限 然后可以进行相对应的禁用和启用,

//第一步在 vuex/getters.js
points: (state) => state.user.userInfo.roles.points;//权限点数组 登录成功之后在userInfo中拿到的
//这是一个混入mixin 
export default {
  methods: {
    // 提供一个权限点,看是不是在数组中,返回值是布尔值
    checkPermission(point) {
      return !this.$store.getters.points.includes(point);
    },
  },
};

//第二部  main.js 注册全局混入
import mixins from './mixins'
Vue.mixin(mixins)

//第三步 在页面的按钮中使用  ADD-SOCIAL就是按钮权限点的标识  要跟后台的数据同步
<el-button type="primary" :disabled="checkPermission('ADD-SOCIAL')">添加</el-button>

方法2.

可以自定义一个全局的指令  也是跟上面一样的思路  也是通过传参 然后在用户的权限点列表中判断是否存在这个权限点 ,

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态路由权限,按钮的权限,菜单权限分别是怎么实现的 的相关文章

  • Jasmine 条件 callThrough 和 callFake

    我有一个返回函数引用的方法 function methodetobeMoked param case1 return func1 case 2 return func2 case n return funcN 我需要监视这个方法并返回特定输
  • 在使用 jQuery 拖动时向元素添加 CSS 类

    是否可以在元素被拖动到特定区域时向其添加 CSS 类 并在元素被删除后替换该类 我并不是到处寻找这个功能 而是只在特定区域寻找这个功能 是的 这当然有可能 jQuery UI 提供了一些方便的选项和事件来执行此操作 对于初学者来说 可拖动元
  • 使用 jquery 淡入/淡出

    我正在研究我的学生项目 我是新的 jquery 对于该项目 我必须使用 jquery 来增强一些功能 并且我已经学到了很多来执行基本任务 但我陷入了一些非常令人困惑的事情 我的一个脚本实际上在鼠标悬停在功能上时更改了 div 容器的图像 功
  • 使用浏览器内的 JS 数值求解三角方程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 给定变量值s v and h 并给定一个库 例如数字 js http www numericjs com index php我怎样才能用数
  • Exceljs:迭代每行和每列的每个单元格

    我想在所有单元格中添加粗边框 这是一个有角度的项目 我正在使用打字稿 我可以为 1 个单元格做到这一点 worksheet getCell A1 border top style thick left style thick bottom
  • 如何使用jquery格式化数字

    我正在尝试删除 之后的数字 然后我想格式化数字 16810900 211233 喜欢这个 16 810 900 但我不知道该怎么做 这是我的 html 是这样的 div class main p class active 10200 00
  • Chart.js - 如何将数组集合推入数据集

    我一直在尝试多种方法将数组集合推送到数据集中 任何人都可以帮助我根据下面的代码将数组推入堆积图表中 这是例子 Codepen 堆叠栏 https codepen io narendrajadhav pen abzpWam JavaScrip
  • 如何更改点击事件上的引导插入符指向方向

    我正在使用 2 3 2 引导程序 因为当我单击菜单按钮时 我可以更改插入符号图标的位置 我需要当我单击图标插入符号向上时 当您单击另一个项目时 插入符号返回到初始状态 这怎么可能 导航代码 div div class container d
  • 将其作为参数传递给 addEventListener()

    我想添加change一组复选框的事件 我如何访问this在我的事件函数中 这样当我执行事件时我可以访问复选框的值 这是我当前的代码 var checkboxes document getElementsByClassName cb Arra
  • 获取 pdf 第 1 页(共 2 页)的图像

    我正在使用 html2canvas 和 jsPDF 以及 Angular4 创建图像 我想将此图像放置在 2 页生成的 pdf 的第 1 页上 但似乎这条线 doc save test pdf 需要在函数内部htm2canvas 因为如果我
  • 强制执行 show.bind

    我有一个包含数据的表 当从另一个视图触发事件时 我希望视图检查 show bind 语句 问题是该事件没有更改当前视图中的任何数据 foo html tr p canBeRemoved p tr 我正在使用 EventAggregator
  • 内联执行生成的汇编程序

    我正在阅读以下演示文稿 http wingolog org pub qc 2012 js slides pdf http wingolog org pub qc 2012 js slides pdf其中讨论了 4 10 19 内联 ASM
  • 我什么时候应该使用内联和外部 Javascript?

    我想知道什么时候应该包含外部脚本或将它们与 html 代码内联编写 就性能和易于维护而言 这方面的一般做法是什么 真实场景 我有几个需要客户端表单验证的 html 页面 为此 我使用了一个包含在所有这些页面上的 jQuery 插件 但问题是
  • Facebook 登录无法在移动浏览器中使用

    我使用 react facebook login 在我的网站中实现了 facebook 登录module https github com keppelen react facebook login 我在 ComponentDidMount
  • Webpack:如何将 javascript 注入 HTML 而不是单独的 JS 文件

    有没有办法让 webpack 将输出注入 HTML 而不是单独的文件 我不得不使用html webpack inline source plugin https github com DustinJackson html webpack i
  • D3 时间解析返回 null

    根据此页面上的说明 https github com mbostock d3 wiki Time Formatting https github com mbostock d3 wiki Time Formatting我正在尝试解析 ISO
  • 如何与使用 child_process.spawn 创建的新创建的服务器交互

    我正在尝试为我的私人托管的 反恐精英全球攻势 服务器制作一个前端 当我点击运行服务器时 在前端 一切正常 服务器启动并记录到控制台 但是如何查看服务器IP地址 服务器中的玩家等信息呢 这是我到目前为止运行服务器的内容 router post
  • Bootstrap 3 - 模态背景不会根据模态对话框的高度调整大小?

    我将一个表单放入模式中 并尝试在用户触发单选按钮时显示表单的一些隐藏字段 显示隐藏字段后 模态自动重新缩放的高度 但模态背景的高度不能用作模态对话框 我该如何解决它 div class modal fade div class modal
  • 正则表达式获取两个方括号之间的数字

    您好 我需要使用正则表达式在 JavaScript 中获取两对方括号内的字符串 这是我的字符串 12 23 asd 到目前为止我尝试的是使用这种模式 d 我需要获得价值12使用正则表达式 您可以使用以下正则表达式 d 这将提取12 from
  • 自动更改 Twitter Bootstrap 选项卡

    我希望 Twitter Bootstrap 选项卡按时间顺序更改 我使用它们有点像旋转木马 我希望选项卡每 10 秒切换到下一个选项卡 这是一个例子 http library buffalo edu http library buffalo

随机推荐