vue路由权限和按钮权限怎么实现
发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇"vue路由权限和按钮权限怎么实现"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
千家信息网最后更新 2024年11月30日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安全错误
数据库的锁怎样保障安全
网络安全常识考题
电脑服务器属于什么类别
无线网络技术电话
mc部落服务器点卷能换金币吗
报道 学生网络安全讲座
有服务器的点歌机怎么连手机
服务器有的浏览器接收不到数据
软件开发电路
当今网络安全主要特点包括
南开大学数据库应用系统设计题
盐城大规模分布式存储数据库
安全狗删除其他绑定服务器
传感器数据采集上传服务器
石家庄数据平台软件开发
科技互联网医疗加速走进春天里
英国伦敦软件开发商
云服务器怎么传数据
非关系型数据库不支持事务
三级下拉框js不需要数据库
git 远程服务器搭建
收费的服务器防护软件
疾控数据库
服务器 一个月电费
学生管理数据库sql
清镇软件开发者
什么叫会员数据库
ip组播的网络安全
在数据库中date类型如何插入
软件开发SR什么意思
沈阳公司电子营业执照应用服务器