vue权限管理系统的实现代码

2020-06-13 10:42:52易采站长站整理

后台管理系统一般都会有权限模块,用来控制用户能访问哪些页面和哪些数据接口。大多数管理系统的页面都长这样。

左边为菜单,分为两级,右边为图表显示区域,有增删改查的按钮。

表的结构


SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_auth_rule
-- ----------------------------
DROP TABLE IF EXISTS `t_auth_rule`;
CREATE TABLE `t_auth_rule` (
`id_pk` bigint(20) NOT NULL AUTO_INCREMENT,
`auth_id` varchar(128) NOT NULL COMMENT '权限Id',
`pauth_id` varchar(128) DEFAULT NULL COMMENT '父级Id',
`auth_name` varchar(255) NOT NULL COMMENT '权限名称',
`auth_icon` varchar(255) NOT NULL COMMENT '权限图标',
`auth_type` smallint(6) NOT NULL COMMENT '权限类型,BIT表示其属性rn 0x00表示可显示的菜单权限节点;rn 0x01表示普通节点',
`auth_condition` text COMMENT '条件',
`remark` varchar(255) DEFAULT NULL COMMENT '备注',
`is_menu` smallint(255) DEFAULT '0' COMMENT '是否为菜单,0表示非,1表示是',
`weight` int(11) NOT NULL DEFAULT '0' COMMENT '权重',
`rule` varchar(256) DEFAULT NULL COMMENT '规则路径主要对应菜单或方法的路径名称',
`cr_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`up_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id_pk`),
UNIQUE KEY `AK_auth_id` (`auth_id`)
) ENGINE=InnoDB AUTO_INCREMENT=264 DEFAULT CHARSET=utf8 COMMENT='权限规则表,记录权限相关的信息,权限以父子关系存在,菜单是权限的一种。';

SET FOREIGN_KEY_CHECKS = 1;

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for t_role_auth
-- ----------------------------
DROP TABLE IF EXISTS `t_role_auth`;
CREATE TABLE `t_role_auth` (
`id_pk` bigint(20) NOT NULL AUTO_INCREMENT,
`role_id_fk` varchar(32) DEFAULT NULL COMMENT '角色id',
`auth_id_fk` varchar(128) DEFAULT NULL COMMENT '权限id',
`aa` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id_pk`)
) ENGINE=InnoDB AUTO_INCREMENT=77 DEFAULT CHARSET=utf8 COMMENT='角色与权限的关系表';

SET FOREIGN_KEY_CHECKS = 1;

对于菜单的权限,通过路由表匹配


addRouters(menuMap) {
let routerArr = [];
for (let j = 0; j < routerList.length; j++) {
let obj;
if (menuMap['AuthRule::' + routerList[j].path]) { // 找到一级菜单
obj = {
path: routerList[j].path,
component: routerList[j].component,
redirect: routerList[j].redirect,
name: routerList[j].name,