vue后台管理系统根据不同操作员设置页面按钮权限

news/2024/7/24 5:02:31 标签: vue.js, 前端

需求:后台管理系统 需要不同身份的操作员登录系统分别拥有不同的按钮权限
思路:给页面需要控制的每一个按钮一个唯一编码(id的意思),后端可以通过接口(我这个系统是登录接口返回的)返回当前登录操作员所拥有的所有的按钮id数组集合 然后前端通过比对判断按钮是否显示 具体如下

1.保存后端返回的当前操作员所拥有的所有按钮的id数组

代码如下(示例):

后端返回:A操作员所拥有的需要控制权限的按钮id集合: buttons: [1001,2001,3001,4001]
前端保存:vuex或者保存本地 sessionStorage.setItem("buttons",JSON.stringfy(buttons||'[]'))

2.封装个方法判断当前操作员是否有权限

utils/auth.js我的例子写在

export function isAuth (key) {
	return JSON.parse(sessionStorage.getItem("buttons" || '[]').indexOf(key)!== -1 || false
}

3.main.js全局配置一下

import {isAuth} form '@/utils/auth.js'
Vue.prototype.isAuth = isAuth

4.使用

// 例如页面有如下按钮
  <el-button disabled>默认按钮</el-button>
  <el-button v-if="isAuth(1001)" type="primary" disabled>主要按钮</el-button>
  <el-button v-if="isAuth(2001)" type="success" disabled>成功按钮</el-button>
  <el-button v-if="isAuth(4001)" type="info" disabled>信息按钮</el-button>
  <el-button v-if="isAuth(3001)" type="warning" disabled>警告按钮</el-button>
  <el-button v-if="isAuth(8001)" type="danger" disabled>危险按钮</el-button>

总结:如上 第一个按钮表示不受控制的按钮 即每个操作员登录都可以操控
第二个到第五个就是A操作员可以控制的需要设置权限的按钮(因为前面后端已经返回 就会根据匹配自动显示哪些按钮A可以操作)
最后一个按钮A没有权限 即在A登录系统的时候页面不会出现这个按钮


http://www.niftyadmin.cn/n/1367412.html

相关文章

简述vue表格数据赋值给新变量后,原表格数据也随新变量数据的变化而发生改变

将elementui表格行数据的某一个数组arrList赋值给一个新的数组list 当我list进行删除操作之后 原表格里的arrList也被修改了 一般出现这种问题是因为vue在利用等号赋值时&#xff0c;是一种浅拷贝的方式&#xff0c;它是将等号右边的数据的引用给了等号左边的变量&#xff0c;这…

vue两个按钮切换分别使左右两边内容占满全屏(elementui)

需求简要说明 页面上分为左右两半部分 &#xff0c;有时候屏幕过小需要两边用按钮切换使其都可以全屏显示或得更大的宽度 一、图片示例 二、想要得到的效果示例 两个按钮切换分别使左右两边内容占满全屏2.简易代码片 这个页面布局分为三份即左边树形结构部分中间按钮部分和右…

js将数组里的的元素多种类型(字符串/数组/布尔)相互转换

js将数组里的的元素多种类型&#xff08;字符串/数组/布尔&#xff09;相互转换 使用函数map() 下面列举几个常用的例子 map() 方法创建一个新数组&#xff0c;其结果是该数组中的每个元素是调用一次提供的函数后的返回值 1、将字符串数组转化为数值型数组 let arr ["1&…

vue $qs的使用

vue $qs把请求的参数进行序列化 方法 1.$qs.parse() 是将URL解析成对象的形式 ex: 前端参数格式&#xff1a;pageNo1&pageSize15&funName&integName&interfaceType&interfaceForm&source&status 后台接受参数: {funName:’’,integface:’’,inte…

vue下载依赖的问题

vue下载依赖的问题 在vue项目里下载node_modules时 npm install --save 因为使用的是外网服务&#xff0c;容易报错 用国内镜像 cnpm install --save 会出现各种意想不到的bug 解决方案 npm install --registryhttps://registry.npm.taobao.org

vue里package.json 和package-lock.json区别

vue里package.json 和package-lock.json区别 package.json 文件是对项目或者模块包的描述&#xff0c;也是配置项&#xff0c;安装node_modules的凭据。package-lock.json文件是锁定安装时的包的版本号&#xff0c;以保证其他人在npm install时大家的依赖能保证一致。第一次np…

vue input 绑定@blur以及其他事件,执行相同的函数,触发多次函数

问题 input 绑定了blur和keyup事件&#xff0c;但是执行的函数是一样的&#xff0c;我在执行回车事件的同时&#xff0c;也会触发失焦的事件&#xff0c;所以导致代码执行了两次&#xff0c;如下所示。 <el-input v-model"value" type"input" blur&qu…

解决VUE [WDS] DISCONNECTED 错误

在运行项目的时候会出现一下情况 解决方式&#xff1a; 在vue.config.js文件中找到 devServer,添加 Headers: { Access-Control-Allow-Origin: * }, hotOnly: false, disableHostCheck: true 出现原因&#xff1a;win10默认设置的ipv6的优先级高于ipv4&#xff0c;所以把lo…