vue权限管理——按钮控制

这篇具有很好参考价值的文章主要介绍了vue权限管理——按钮控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.按钮根据后端返回数据决定展示与否

根据right中的数据对应增删改查按钮

const menuList = [
    {'id': 1, path:'/uploadSpec','authName': "上传spec", icon: 'User', children:[], rights:['view','add','edit','delete']},
    {'id': 2, path:'/showSpec', 'authName': "Spec预览", icon: 'DataAnalysis',children:[], rights:['view','add','edit','delete']},
    {'id': 3, path:'/generateTxt', 'authName': "生成测试数据", icon: 'DataAnalysis',children:[], rights:['view','add','edit','delete']},
    {'id': 4, path:'/generateCronjob', 'authName': "生成转码程序", icon: 'Promotion',children:[], rights:['view','add','edit','delete']},
    {'id': 5, path:'/pdfCompare', 'authName': "PDF文档对比", icon: 'DocumentCopy',children:[], rights:['view','add','edit','delete']},
    {'id': 6, path:'/resourceUpdate', 'authName': "资源更新管理", icon: 'Management',children:[], rights:['view','add','edit','delete']},
    {'id': 7, path:'/generateTestCase', 'authName': "自动生成ST/SIT案例", icon: 'Files',children:[], rights:['view','add','edit','delete']},
    {'id': 8, path:'/userManagement', 'authName': "用户管理", icon: 'User', rights:['view']},
    {'id': 9, path:'/roleManagement', 'authName': "角色管理", icon: 'Stamp', rights:['view']},
]

2.在设置动态路由时,将rights权限数据设置到路由元数据中meta

 initDynamicRoutes给用户对应的router中动态添加meta元数据后,permission.js中通过router.currentRoute就可以获取

export const initDynamicRoutes = async () => {
    const menuList = Store.state.user.menuList;;
    const rights = Store.state.user.rights;;

    menuList.length > 0 && menuList.forEach(item => {
        if (item.path) {
            const temp = routeMapping[item.path];
            // 动态添加rights到meta中,使用自定义指令时通过rights鉴别其是否有该权限
            temp.meta.rights = item.rights;
            router.addRoute("Home", temp);
        }
    });
    router.addRoute({ name: 'NotFound', path: '/404', title: "页面不存在", component: NotFound });
    router.addRoute({ path: '/:pathMatch(.*)', redirect: '/404' });
}

3.按钮上通过自定义指令控制

directives/permission.js

获取路由元数据中的rights权限和按钮上的action记录权限做比较:如果包含则有该权限,否则无权限,进行删除元素或者设置disabled文章来源地址https://www.toymoban.com/news/detail-677397.html

import router from "@/route/route"
import { nextTick } from 'vue'

export const vHas = {
    created(el, binding, vnode, prevVnode) {
        let metaRights = router.currentRoute.value.meta.rights;
        let action = binding.value.action;
        let effect = binding.value.effect;

        if (!metaRights.includes(action)) {
            // 注意要使用nextTick,才能立即修改DOM
            nextTick(() => {
                if (effect === "disabled") {
                    el.ariaDisabled = 'true';
                    el.classList.add('is-disabled')
                } else {
                    if (el.parentNode)
                        el.parentNode.removeChild(el)
                    else
                        el.remove();
                }
            });
        }
    }
}

4.页面中使用v-has指令

<template>
<div>
    <el-button type="primary" v-has="{action:'add',effect:'disabled'}">增加角色</el-button>
    <el-button type="success" v-has="{action:'edit'}">修改角色</el-button>
    <el-button type="info" v-has="{action:'view'}">查看角色</el-button>
    <el-button type="warning" v-has="{action:'delete',effect:'disabled'}">删除角色</el-button>
</div>
   
</template>
<script setup>
import { vHas } from "@/directives/permission"

</script>

到了这里,关于vue权限管理——按钮控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue前端自定按钮控制手动上传文件

    首先element-ui中的上传组件是这样的 数据结构: { action:“”//上传的连接 filelist:\\\'‘’//选种的文件集合 } 点击按钮后就自动根据action的地址上传,实际上是element-ui自动发送了post请求给action连接,但是我想要通过自己手动上传文件(图片/excel) 直接发送这个文件体 游览器发现无负载

    2024年04月25日
    浏览(20)
  • Vue.js 2.0 自定义指令

    除了默认设置的核心指令( v-model 和 v-show ),Vue 也允许注册自定义指令。注意,在 Vue2.0 里面,代码复用的主要形式和抽象是组件——然而,有的情况下,你仍然需要对纯 DOM 元素进行底层操作,这时候就会用到自定义指令。下面这个例子将聚焦一个 input 元素,像这样: 当页面

    2023年04月19日
    浏览(41)
  • vue权限管理——请求和响应权限控制

    每次请求请求头都携带token,没有token或者token失效后端会返回错误 防止一些在浏览器上强制将按钮改成可用(如将disabled改为true就可用),然后发起请求后发送后端 响应控制:请求返回401,token无效或者后期,则需要跳转到登录界面

    2024年02月11日
    浏览(27)
  • 前端Vue:权限管理,给角色分配权限

    👉前端-Vue权限控制,菜单权限,按钮权限_一人创客的博客-CSDN博客 目录 介绍: 前端权限的概念: 前端权限的意义: Vue权限管理的代码实现: 菜单 刷新界⾯菜单消失 标识⽤户名, ⽅便查看当前⽤户 退出登陆:  界面: 1.判断当前是否登陆 2.控制是否可以访问角色界面 (

    2024年02月11日
    浏览(25)
  • 前端Vue自定义数字输入框 带加减按钮的数字输入框组件

    随着软件开发的复杂度不断提高,传统开发方式逐渐显露出其弊端。一处小小的改动或功能的增加往往需要我们对整个系统的逻辑进行修改,不仅增加了开发难度,还可能导致维护成本的上升。然而,组件化开发的出现有效地解决了这些问题,它不仅可以实现独立开发、维护

    2024年02月10日
    浏览(38)
  • 前端Vue入门-day05-自定义指令、插槽、路由入门

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 自定义指令  基本语法 (全局局部注册) 全局注册  局部注册 指令的值  v-loading 指令封装 插槽 默认插槽 后备内容(默认值)  具名插槽  作用域插槽  路由入门 单页应

    2024年02月13日
    浏览(31)
  • Vue + Element UI 前端篇(十三):页面权限控制

    既然是后台权限管理系统,当然少不了权限控制啦,至于权限控制,前端方面当然就是对页面资源的访问和操作控制啦。 前端资源权限主要又分为两个部分,即导航菜单的查看权限和页面增删改操作按钮的操作权限。 我们的设计把页面导航菜单和页面操作按钮统一存储在菜

    2024年01月25日
    浏览(39)
  • 前端Vue自定义等分底部菜单导航按钮 自适应文字宽度 可更改组件位置

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。 通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月12日
    浏览(40)
  • 页面/按钮 - 权限控制(前端)

    什么是权限控制 在项目中,尤其是在后台管理系统中,不同人员登陆,看到的页面菜单是不一样的,比如,一个公司的办公系统,老板登陆可以看到所有的页面,而普通员工登录可能无法看到公司业绩,营收情况的页面,比如公司的员工个人资料页面只有人力资源部门有权利

    2024年02月13日
    浏览(27)
  • vue3用户权限管理(导航栏权限控制)2

    上一节我们说到,通过后端的用户权限来进行路由的动态添加,实现权限控制,这一节我们通过递归导航栏组件,实现后台权限控制导航栏,接上一节所说我们在vuex中存储了一个路由数组[\\\"/\\\",\\\"*\\\"]进行权限控制,这一节还是要使用这个路由数组进行导航栏的控制,开始吧。  

    2024年02月03日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包