千家信息网

vue路由权限和按钮权限怎么实现

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇"vue路由权限和按钮权限怎么实现"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
千家信息网最后更新 2026年11月03日vue路由权限和按钮权限怎么实现

这篇"vue路由权限和按钮权限怎么实现"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"vue路由权限和按钮权限怎么实现"文章吧。

一 菜单路由权限

1.1前端路由配置表

1.2后端数据返回

1.3 拿到数据后存到vuex

1.4 扁平化的目的是为了跳转路由时进行对比权限

//扁平化方法flatten(data) { return data.reduce((arr,{name,id,resourceType,dimensionTypeCode,btnPermissions,path,children = [],}) =>   arr.concat([{name,id,resourceType,dimensionTypeCode,btnPermissions,path,},],     this.flatten(children)    ),[]);},

1.5 el-menu中直接拿到vuex中的数据进行渲染 sidebar-item组件的代码就不贴了

  //js部分computed: {  productMenuList() {    if(this.$store.state.user.user.userMenu){      return this.$store.state.user.user.userMenu;    }       },},

1.6 router跳转拦截判断

router.beforeEach((to, _from, next) => {  document.title = "后台系统-" + to.meta.title // 动态title  if (whiteList.includes(to.path)) {    next();  } else {    if (storageLocal.getItem("token")) {      if (hasPermission(to, store.state.user.user.menuTile)) {        next();      }      else {        next('/error/404')      }    }    else {      next({        path: "/login",        query: {          redirect: to.fullPath        }      })    }  }})//获取是否有当前跳转的菜单权限function hasPermission(router, accessMenu) {  let menu = getMenuByPath(router.path, accessMenu);  if (menu.path) {    return true;  }  return false;}

1.7 getMenuBypath方法

这里我是拿path进行比对的,也可以拿name,只要是路由中唯一的都可以;

export const getMenuByPath = function (path, accessMenu) {    if (accessMenu) {        let filter = accessMenu.filter(res => {            return res.path == path;        })        return filter.length > 0 ? filter[0] : {}    } }

二 按钮权限的实现

2.1后端返回的数据还是????那份

2.2 封装自定义指令,新建hasPermissionbtn.js

import router from '../../router'import store from '../../store' export default (Vue) => {  /**自定义按钮权限指令 */  Vue.directive('has', {    mounted(el, binding) {      //从配置获取用户按钮权限      let path = router.currentRoute.value.path;      let menu = getMenuByPath(path, store.state.user.user.menuTile);      //获取按钮权限      if (!Vue.config.globalProperties.$_has(binding.value, menu.btnPermissions)){        //移除不匹配的元素         el[xss_clean].removeChild(el)         // el.setAttribute("disabled",true)       }  },}) //检查权限方法Vue.config.globalProperties.$_has = function (value, btnPermissions) {  let isExist = false  //有权限的按钮集合;   let btnPermsArr = []    if (btnPermissions) {      btnPermsArr = btnPermissions;    }    if (btnPermsArr.includes(value)) {      isExist = true    }    return isExist  }}

2.3 权限按钮中的使用

//v-has可以使用在任何元素上,如div或者el-table-column标签关联

以上就是关于"vue路由权限和按钮权限怎么实现"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

权限 按钮 路由 内容 数据 方法 元素 扁平 指令 文章 知识 篇文章 菜单 配置 代码 价值 前端 动态 后台 大部分 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 互联网巨头反垄断金融科技 互联网巨头科技公司 互联网金融 科技金融 互联网科技视频 安徽鑫晟辉互联网科技 丰台科技园 互联网 壕鑫互联网络科技 北京禾田雨橡互联网科技 国外互联网科技网站 互联网科技公司做什么 安控科技rtu产品工业互联网 青岛中康互联网医疗科技有限公司 互联网为啥属于高科技 爱医互联网络科技 福建互联网展示科技馆设计 互联网科技平台产品运营 北京品多多互联网科技有限公司 互联网企业和网络科技有限公司 如何强化互联网金融科技 互联网电商科技 金融科技与互联网金融 上海亿帐通互联网科技 富国互联网科技创新基金 团飞科技与伯堂互联网服务平台 互联网校园科技培训 昭通互联网科技选哪家 互联网科技人工智能实验室 互联网公司属于科技吗 株洲百竞科技的互联网营销顾问
0