权限控制

  作者:记性不好的阁主

1、在路由前进行权限判断


// 路由前的操作
router.beforeEach((to, from, next) => {
//顶部进度条开始显示加载
NProgress.start()
// 如果cookie中有token
if (getToken()) {
if (to.path === '/login') {
// 如果是/login, 路由到/
next({ path: '/' })
NProgress.done()
} else {
if (store.getters.roles.length === 0) {
// 判断当前用户是否已拉取完user_info信息
store.dispatch('GetInfo').then(res => {
// 拉取user_info
const roles = res.roles
store.dispatch('GenerateRoutes', { roles }).then(accessRoutes => {
// 测试 默认静态页面
// store.dispatch('permission/generateRoutes', { roles }).then(accessRoutes => {
// 根据roles权限生成可访问的路由表
router.addRoutes(accessRoutes) // 动态添加可访问路由表
next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
})
})
.catch(err => {
store.dispatch('FedLogOut').then(() => {
Message.error(err)
next({ path: '/' })
})
})
} else {
next()
// 没有动态改变权限的需求可直接next() 删除下方权限判断
// if (hasPermission(store.getters.roles, to.meta.roles)) {
// next()
// } else {
// next({ path: '/401', replace: true, query: { noGoBack: true }})
// }
// 可删
}
}
}else {
//如果没有token
if(whiteList.indexOf(to.path) !== -1){
//如果目标路径在白名单中,则直接进入
next()
}else {
next(`/login?redirect=${to.path}`) //重定向到登录页
// 进度条结束
NProgress.done()
}
}

})


2、调用GetInfo方法获取用户信息


/**
* 获取用户信息
*
* @return 用户信息
*/
@GetMapping("getInfo")
public AjaxResult getInfo()
{
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
SysUser user = loginUser.getUser();
// 角色集合
Set<String> roles = permissionService.getRolePermission(user);
// 权限集合
Set<String> permissions = permissionService.getMenuPermission(user);
AjaxResult ajax = AjaxResult.success();
ajax.put("user", user);
ajax.put("roles", roles);
ajax.put("permissions", permissions);
return ajax;
}


I.超级管理员


SysUser user = loginUser.getUser();


{
    "admin"true,
    "avatar""",
    "createBy""admin",
    "createTime"1521171180000,
    "delFlag""0",
    "dept": {
        "children": [],
        "deptId"103,
        "deptName""研发部门",
        "leader""若依",
        "orderNum""1",
        "params": {},
        "parentId"101,
        "status""0"
    },
    "deptId"103,
    "email""ry@163.com",
    "loginDate"1521171180000,
    "loginIp""127.0.0.1",
    "nickName""若依",
    "params": {},
    "password""$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2",
    "phonenumber""15888888888",
    "remark""管理员",
    "roles": [
        {
            "admin"true,
            "dataScope""1",
            "flag"false,
            "params": {},
            "roleId"1,
            "roleKey""admin",
            "roleName""超级管理员",
            "roleSort""1",
            "status""0"
        }
    ],
    "sex""1",
    "status""0",
    "userId"1,
    "userName""admin"
}


// 角色集合

Set<String> roles = permissionService.getRolePermission(user);


["admin"]


// 权限集合

Set<String> permissions = permissionService.getMenuPermission(user);


["*:*:*"]


II.ry员工


SysUser user = loginUser.getUser();


{
    "admin"false,
    "avatar""",
    "createBy""admin",
    "createTime"1521171180000,
    "delFlag""0",
    "dept": {
        "children": [],
        "deptId"105,
        "deptName""测试部门",
        "leader""若依",
        "orderNum""3",
        "params": {},
        "parentId"101,
        "status""0"
    },
    "deptId"105,
    "email""ry@qq.com",
    "loginDate"1521171180000,
    "loginIp""127.0.0.1",
    "nickName""若依",
    "params": {},
    "password""$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2",
    "phonenumber""15666666666",
    "remark""测试员",
    "roles": [
        {
            "admin"false,
            "dataScope""2",
            "flag"false,
            "params": {},
            "roleId"2,
            "roleKey""common",
            "roleName""普通角色",
            "roleSort""2",
            "status""0"
        }
    ],
    "sex""1",
    "status""0",
    "userId"2,
    "userName""ry"
}


// 角色集合

Set<String> roles = permissionService.getRolePermission(user);


/**
* 获取角色数据权限
*
* @param user 用户信息
* @return 角色权限信息
*/
public Set<String> getRolePermission(SysUser user)
{
Set<String> roles = new HashSet<String>();
// 管理员拥有所有权限
if (user.isAdmin())
{
roles.add("admin");
}
else
{
roles.addAll(roleService.selectRolePermissionByUserId(user.getUserId()));
}
return roles;
}




/**
* 根据用户ID查询权限
*
* @param userId 用户ID
* @return 权限列表
*/
@Override
public Set<String> selectRolePermissionByUserId(Long userId)
{
List<SysRole> perms = roleMapper.selectRolePermissionByUserId(userId);
Set<String> permsSet = new HashSet<>();
for (SysRole perm : perms)
{
if (StringUtils.isNotNull(perm))
{
permsSet.addAll(Arrays.asList(perm.getRoleKey().trim().split(",")));
}
}
return permsSet;
}


List<SysRole> perms = roleMapper.selectRolePermissionByUserId(userId);



select distinct r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope,
r.status, r.del_flag, r.create_time, r.remark
from sys_role r
left join sys_user_role ur on ur.role_id = r.role_id
left join sys_user u on u.user_id = ur.user_id
left join sys_dept d on u.dept_id = d.dept_id
WHERE r.del_flag = '0' and ur.user_id = #{userId}




关联关系:



[
    {
        "admin"false,
        "createTime"1521171180000,
        "dataScope""2",
        "delFlag""0",
        "flag"false,
        "params": {},
        "remark""普通角色",
        "roleId"2,
        "roleKey""common",
        "roleName""普通角色",
        "roleSort""2",
        "status""0"
    }
]


permsSet


["common"]



// 权限集合

Set<String> permissions = permissionService.getMenuPermission(user);


/**
* 获取菜单数据权限
*
* @param user 用户信息
* @return 菜单权限信息
*/
public Set<String> getMenuPermission(SysUser user)
{
Set<String> roles = new HashSet<String>();
// 管理员拥有所有权限
if (user.isAdmin())
{
roles.add("*:*:*");
}
else
{
roles.addAll(menuService.selectMenuPermsByUserId(user.getUserId()));
}
return roles;
}


/**
* 根据用户ID查询权限
*
* @param userId 用户ID
* @return 权限列表
*/
@Override
public Set<String> selectMenuPermsByUserId(Long userId)
{
List<String> perms = menuMapper.selectMenuPermsByUserId(userId);
Set<String> permsSet = new HashSet<>();
for (String perm : perms)
{
if (StringUtils.isNotEmpty(perm))
{
permsSet.addAll(Arrays.asList(perm.trim().split(",")));
}
}
return permsSet;
}


List<String> perms = menuMapper.selectMenuPermsByUserId(userId);


select distinct m.perms
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id
where ur.user_id = #{userId}



关联关系:



[
    "",
    "system:user:list",
    "system:role:list",
    "system:menu:list",
    "system:dept:list",
    "system:post:list",
    "system:dict:list",
    "system:config:list",
    "system:notice:list",
    "monitor:online:list",
    "monitor:job:list",
    "monitor:druid:list",
    "monitor:server:list",
    "tool:build:list",
    "tool:gen:list",
    "tool:swagger:list",
    "monitor:operlog:list",
    "monitor:logininfor:list",
    "system:user:query",
    "system:user:add",
    "system:user:edit",
    "system:user:remove",
    "system:user:export",
    "system:user:import",
    "system:user:resetPwd",
    "system:role:query",
    "system:role:add",
    "system:role:edit",
    "system:role:remove",
    "system:role:export",
    "system:menu:query",
    "system:menu:add",
    "system:menu:edit",
    "system:menu:remove",
    "system:dept:query",
    "system:dept:add",
    "system:dept:edit",
    "system:dept:remove",
    "system:post:query",
    "system:post:add",
    "system:post:edit",
    "system:post:remove",
    "system:post:export",
    "system:dict:query",
    "system:dict:add",
    "system:dict:edit",
    "system:dict:remove",
    "system:dict:export",
    "system:config:query",
    "system:config:add",
    "system:config:edit",
    "system:config:remove",
    "system:config:export",
    "system:notice:query",
    "system:notice:add",
    "system:notice:edit",
    "system:notice:remove",
    "monitor:operlog:query",
    "monitor:operlog:remove",
    "monitor:operlog:export",
    "monitor:logininfor:query",
    "monitor:logininfor:remove",
    "monitor:logininfor:export",
    "monitor:online:query",
    "monitor:online:batchLogout",
    "monitor:online:forceLogout",
    "monitor:job:query",
    "monitor:job:add",
    "monitor:job:edit",
    "monitor:job:remove",
    "monitor:job:changeStatus",
    "monitor:job:export",
    "tool:gen:query",
    "tool:gen:edit",
    "tool:gen:remove",
    "tool:gen:import",
    "tool:gen:preview",
    "tool:gen:code"
]



permsSet


[
    "system:user:resetPwd",
    "system:post:list",
    "monitor:operlog:export",
    "monitor:druid:list",
    "system:menu:query",
    "system:dept:remove",
    "system:menu:list",
    "tool:gen:edit",
    "system:dict:edit",
    "monitor:logininfor:remove",
    "monitor:job:list",
    "system:user:query",
    "system:user:add",
    "system:notice:remove",
    "system:user:export",
    "system:role:remove",
    "monitor:job:edit",
    "tool:gen:query",
    "system:dept:query",
    "system:dict:list",
    "monitor:job:query",
    "monitor:online:forceLogout",
    "system:notice:list",
    "system:dict:query",
    "monitor:online:query",
    "system:notice:query",
    "system:notice:edit",
    "monitor:online:list",
    "tool:gen:import",
    "system:post:edit",
    "monitor:job:add",
    "monitor:logininfor:list",
    "tool:gen:list",
    "system:dict:export",
    "system:post:query",
    "system:post:remove",
    "system:config:edit",
    "system:user:remove",
    "system:config:list",
    "system:menu:add",
    "system:role:list",
    "system:user:import",
    "system:dict:remove",
    "system:user:edit",
    "system:post:export",
    "system:config:export",
    "system:role:edit",
    "monitor:online:batchLogout",
    "system:dept:list",
    "system:config:query",
    "monitor:operlog:remove",
    "monitor:operlog:list",
    "system:role:add",
    "system:menu:remove",
    "system:dict:add",
    "monitor:logininfor:query",
    "monitor:server:list",
    "tool:build:list",
    "monitor:logininfor:export",
    "tool:swagger:list",
    "system:dept:edit",
    "system:post:add",
    "monitor:job:changeStatus",
    "tool:gen:preview",
    "monitor:operlog:query",
    "system:user:list",
    "system:notice:add",
    "monitor:job:remove",
    "system:role:export",
    "system:config:add",
    "tool:gen:code",
    "monitor:job:export",
    "tool:gen:remove",
    "system:role:query",
    "system:menu:edit",
    "system:dept:add",
    "system:config:remove"
]



store.dispatch('GetInfo') 出参:


{
    "msg""操作成功",
    "code"200,
    "permissions": [
        "system:user:resetPwd",
        "system:post:list",
        "monitor:operlog:export",
        "monitor:druid:list",
        "system:menu:query",
        "system:dept:remove",
        "system:menu:list",
        "tool:gen:edit",
        "system:dict:edit",
        "monitor:logininfor:remove",
        "monitor:job:list",
        "system:user:query",
        "system:user:add",
        "system:notice:remove",
        "system:user:export",
        "system:role:remove",
        "monitor:job:edit",
        "tool:gen:query",
        "system:dept:query",
        "system:dict:list",
        "monitor:job:query",
        "monitor:online:forceLogout",
        "system:notice:list",
        "system:dict:query",
        "monitor:online:query",
        "system:notice:query",
        "system:notice:edit",
        "monitor:online:list",
        "tool:gen:import",
        "system:post:edit",
        "monitor:job:add",
        "monitor:logininfor:list",
        "tool:gen:list",
        "system:dict:export",
        "system:post:query",
        "system:post:remove",
        "system:config:edit",
        "system:user:remove",
        "system:config:list",
        "system:menu:add",
        "system:role:list",
        "system:user:import",
        "system:dict:remove",
        "system:user:edit",
        "system:post:export",
        "system:config:export",
        "system:role:edit",
        "monitor:online:batchLogout",
        "system:dept:list",
        "system:config:query",
        "monitor:operlog:remove",
        "monitor:operlog:list",
        "system:role:add",
        "system:menu:remove",
        "system:dict:add",
        "monitor:logininfor:query",
        "monitor:server:list",
        "tool:build:list",
        "monitor:logininfor:export",
        "tool:swagger:list",
        "system:dept:edit",
        "system:post:add",
        "monitor:job:changeStatus",
        "tool:gen:preview",
        "monitor:operlog:query",
        "system:user:list",
        "system:notice:add",
        "monitor:job:remove",
        "system:role:export",
        "system:config:add",
        "tool:gen:code",
        "monitor:job:export",
        "tool:gen:remove",
        "system:role:query",
        "system:menu:edit",
        "system:dept:add",
        "system:config:remove"
    ],
    "roles": [
        "common"
    ],
    "user": {
        "admin"false,
        "avatar""",
        "createBy""admin",
        "createTime"1521171180000,
        "delFlag""0",
        "dept": {
            "children": [],
            "deptId"105,
            "deptName""测试部门",
            "leader""若依",
            "orderNum""3",
            "params": {},
            "parentId"101,
            "status""0"
        },
        "deptId"105,
        "email""ry@qq.com",
        "loginDate"1521171180000,
        "loginIp""127.0.0.1",
        "nickName""若依",
        "params": {},
        "password""$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2",
        "phonenumber""15666666666",
        "remark""测试员",
        "roles": [
            {
                "admin"false,
                "dataScope""2",
                "flag"false,
                "params": {},
                "roleId"2,
                "roleKey""common",
                "roleName""普通角色",
                "roleSort""2",
                "status""0"
            }
        ],
        "sex""1",
        "status""0",
        "userId"2,
        "userName""ry"
    }
}



3、调用GenerateRoutes方法获取用户信息


/**
* 获取路由信息
*
* @return 路由信息
*/
@GetMapping("getRouters")
public AjaxResult getRouters()
{
LoginUser loginUser = tokenService.getLoginUser(ServletUtils.getRequest());
// 用户信息
SysUser user = loginUser.getUser();
List<SysMenu> menus = menuService.selectMenuTreeByUserId(user.getUserId());
return AjaxResult.success(menuService.buildMenus(menus));
}


I.超级管理员


List<SysMenu> menus = menuService.selectMenuTreeByUserId(user.getUserId());

递归添加菜单路由树

[
    {
        "children": [
            {
                "children": [],
                "component""system/user/index",
                "createTime"1521171180000,
                "icon""user",
                "isFrame""1",
                "menuId"100,
                "menuName""用户管理",
                "menuType""C",
                "orderNum""1",
                "params": {},
                "parentId"1,
                "path""user",
                "perms""system:user:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/role/index",
                "createTime"1521171180000,
                "icon""peoples",
                "isFrame""1",
                "menuId"101,
                "menuName""角色管理",
                "menuType""C",
                "orderNum""2",
                "params": {},
                "parentId"1,
                "path""role",
                "perms""system:role:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/menu/index",
                "createTime"1521171180000,
                "icon""tree-table",
                "isFrame""1",
                "menuId"102,
                "menuName""菜单管理",
                "menuType""C",
                "orderNum""3",
                "params": {},
                "parentId"1,
                "path""menu",
                "perms""system:menu:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/dept/index",
                "createTime"1521171180000,
                "icon""tree",
                "isFrame""1",
                "menuId"103,
                "menuName""部门管理",
                "menuType""C",
                "orderNum""4",
                "params": {},
                "parentId"1,
                "path""dept",
                "perms""system:dept:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/post/index",
                "createTime"1521171180000,
                "icon""post",
                "isFrame""1",
                "menuId"104,
                "menuName""岗位管理",
                "menuType""C",
                "orderNum""5",
                "params": {},
                "parentId"1,
                "path""post",
                "perms""system:post:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/dict/index",
                "createTime"1521171180000,
                "icon""dict",
                "isFrame""1",
                "menuId"105,
                "menuName""字典管理",
                "menuType""C",
                "orderNum""6",
                "params": {},
                "parentId"1,
                "path""dict",
                "perms""system:dict:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/config/index",
                "createTime"1521171180000,
                "icon""edit",
                "isFrame""1",
                "menuId"106,
                "menuName""参数设置",
                "menuType""C",
                "orderNum""7",
                "params": {},
                "parentId"1,
                "path""config",
                "perms""system:config:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/notice/index",
                "createTime"1521171180000,
                "icon""message",
                "isFrame""1",
                "menuId"107,
                "menuName""通知公告",
                "menuType""C",
                "orderNum""8",
                "params": {},
                "parentId"1,
                "path""notice",
                "perms""system:notice:list",
                "visible""0"
            },
            {
                "children": [
                    {
                        "children": [],
                        "component""monitor/operlog/index",
                        "createTime"1521171180000,
                        "icon""form",
                        "isFrame""1",
                        "menuId"500,
                        "menuName""操作日志",
                        "menuType""C",
                        "orderNum""1",
                        "params": {},
                        "parentId"108,
                        "path""operlog",
                        "perms""monitor:operlog:list",
                        "visible""0"
                    },
                    {
                        "children": [],
                        "component""monitor/logininfor/index",
                        "createTime"1521171180000,
                        "icon""logininfor",
                        "isFrame""1",
                        "menuId"501,
                        "menuName""登录日志",
                        "menuType""C",
                        "orderNum""2",
                        "params": {},
                        "parentId"108,
                        "path""logininfor",
                        "perms""monitor:logininfor:list",
                        "visible""0"
                    }
                ],
                "component""system/log/index",
                "createTime"1521171180000,
                "icon""log",
                "isFrame""1",
                "menuId"108,
                "menuName""日志管理",
                "menuType""M",
                "orderNum""9",
                "params": {},
                "parentId"1,
                "path""log",
                "perms""",
                "visible""0"
            }
        ],
        "createTime"1521171180000,
        "icon""system",
        "isFrame""1",
        "menuId"1,
        "menuName""系统管理",
        "menuType""M",
        "orderNum""1",
        "params": {},
        "parentId"0,
        "path""system",
        "perms""",
        "visible""0"
    },
    {
        "children": [
            {
                "children": [],
                "component""monitor/online/index",
                "createTime"1521171180000,
                "icon""online",
                "isFrame""1",
                "menuId"109,
                "menuName""在线用户",
                "menuType""C",
                "orderNum""1",
                "params": {},
                "parentId"2,
                "path""online",
                "perms""monitor:online:list",
                "visible""0"
            },
            {
                "children": [],
                "component""monitor/job/index",
                "createTime"1521171180000,
                "icon""job",
                "isFrame""1",
                "menuId"110,
                "menuName""定时任务",
                "menuType""C",
                "orderNum""2",
                "params": {},
                "parentId"2,
                "path""job",
                "perms""monitor:job:list",
                "visible""0"
            },
            {
                "children": [],
                "component""monitor/druid/index",
                "createTime"1521171180000,
                "icon""druid",
                "isFrame""1",
                "menuId"111,
                "menuName""数据监控",
                "menuType""C",
                "orderNum""3",
                "params": {},
                "parentId"2,
                "path""druid",
                "perms""monitor:druid:list",
                "visible""0"
            },
            {
                "children": [],
                "component""monitor/server/index",
                "createTime"1521171180000,
                "icon""server",
                "isFrame""1",
                "menuId"112,
                "menuName""服务监控",
                "menuType""C",
                "orderNum""4",
                "params": {},
                "parentId"2,
                "path""server",
                "perms""monitor:server:list",
                "visible""0"
            }
        ],
        "createTime"1521171180000,
        "icon""monitor",
        "isFrame""1",
        "menuId"2,
        "menuName""系统监控",
        "menuType""M",
        "orderNum""2",
        "params": {},
        "parentId"0,
        "path""monitor",
        "perms""",
        "visible""0"
    },
    {
        "children": [
            {
                "children": [],
                "component""tool/build/index",
                "createTime"1521171180000,
                "icon""build",
                "isFrame""1",
                "menuId"113,
                "menuName""表单构建",
                "menuType""C",
                "orderNum""1",
                "params": {},
                "parentId"3,
                "path""build",
                "perms""tool:build:list",
                "visible""0"
            },
            {
                "children": [],
                "component""tool/gen/index",
                "createTime"1521171180000,
                "icon""code",
                "isFrame""1",
                "menuId"114,
                "menuName""代码生成",
                "menuType""C",
                "orderNum""2",
                "params": {},
                "parentId"3,
                "path""gen",
                "perms""tool:gen:list",
                "visible""0"
            },
            {
                "children": [],
                "component""tool/swagger/index",
                "createTime"1521171180000,
                "icon""swagger",
                "isFrame""1",
                "menuId"115,
                "menuName""系统接口",
                "menuType""C",
                "orderNum""3",
                "params": {},
                "parentId"3,
                "path""swagger",
                "perms""tool:swagger:list",
                "visible""0"
            }
        ],
        "createTime"1521171180000,
        "icon""tool",
        "isFrame""1",
        "menuId"3,
        "menuName""系统工具",
        "menuType""M",
        "orderNum""3",
        "params": {},
        "parentId"0,
        "path""tool",
        "perms""",
        "visible""0"
    },
    {
        "children": [],
        "createTime"1521171180000,
        "icon""guide",
        "isFrame""0",
        "menuId"4,
        "menuName""若依官网",
        "menuType""M",
        "orderNum""4",
        "params": {},
        "parentId"0,
        "path""http://ruoyi.vip",
        "perms""",
        "visible""0"
    }
]


/**
* 根据用户名称查询菜单
*
* @param username 用户名称
* @return 菜单列表
*/
@Override
public List<SysMenu> selectMenuTreeByUserId(Long userId)
{
List<SysMenu> menus = null;
if (SecurityUtils.isAdmin(userId))
{
menus = menuMapper.selectMenuTreeAll();
}
else
{
menus = menuMapper.selectMenuTreeByUserId(userId);
}
return getChildPerms(menus, 0);
}


List<SysMenu> menus = menuMapper.selectMenuTreeAll();


select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.visible, ifnull(m.perms,'') as perms, m.is_frame, m.menu_type, m.icon, m.order_num, m.create_time
from sys_menu m where m.menu_type in ('M', 'C') and m.visible = 0
order by m.parent_id, m.order_num




II.ry员工


List<SysMenu> menus = menuMapper.selectMenuTreeByUserId(userId);


[
    {
        "children": [
            {
                "children": [],
                "component""system/user/index",
                "createTime"1521171180000,
                "icon""user",
                "isFrame""1",
                "menuId"100,
                "menuName""用户管理",
                "menuType""C",
                "orderNum""1",
                "params": {},
                "parentId"1,
                "path""user",
                "perms""system:user:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/role/index",
                "createTime"1521171180000,
                "icon""peoples",
                "isFrame""1",
                "menuId"101,
                "menuName""角色管理",
                "menuType""C",
                "orderNum""2",
                "params": {},
                "parentId"1,
                "path""role",
                "perms""system:role:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/menu/index",
                "createTime"1521171180000,
                "icon""tree-table",
                "isFrame""1",
                "menuId"102,
                "menuName""菜单管理",
                "menuType""C",
                "orderNum""3",
                "params": {},
                "parentId"1,
                "path""menu",
                "perms""system:menu:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/dept/index",
                "createTime"1521171180000,
                "icon""tree",
                "isFrame""1",
                "menuId"103,
                "menuName""部门管理",
                "menuType""C",
                "orderNum""4",
                "params": {},
                "parentId"1,
                "path""dept",
                "perms""system:dept:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/post/index",
                "createTime"1521171180000,
                "icon""post",
                "isFrame""1",
                "menuId"104,
                "menuName""岗位管理",
                "menuType""C",
                "orderNum""5",
                "params": {},
                "parentId"1,
                "path""post",
                "perms""system:post:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/dict/index",
                "createTime"1521171180000,
                "icon""dict",
                "isFrame""1",
                "menuId"105,
                "menuName""字典管理",
                "menuType""C",
                "orderNum""6",
                "params": {},
                "parentId"1,
                "path""dict",
                "perms""system:dict:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/config/index",
                "createTime"1521171180000,
                "icon""edit",
                "isFrame""1",
                "menuId"106,
                "menuName""参数设置",
                "menuType""C",
                "orderNum""7",
                "params": {},
                "parentId"1,
                "path""config",
                "perms""system:config:list",
                "visible""0"
            },
            {
                "children": [],
                "component""system/notice/index",
                "createTime"1521171180000,
                "icon""message",
                "isFrame""1",
                "menuId"107,
                "menuName""通知公告",
                "menuType""C",
                "orderNum""8",
                "params": {},
                "parentId"1,
                "path""notice",
                "perms""system:notice:list",
                "visible""0"
            },
            {
                "children": [
                    {
                        "children": [],
                        "component""monitor/operlog/index",
                        "createTime"1521171180000,
                        "icon""form",
                        "isFrame""1",
                        "menuId"500,
                        "menuName""操作日志",
                        "menuType""C",
                        "orderNum""1",
                        "params": {},
                        "parentId"108,
                        "path""operlog",
                        "perms""monitor:operlog:list",
                        "visible""0"
                    },
                    {
                        "children": [],
                        "component""monitor/logininfor/index",
                        "createTime"1521171180000,
                        "icon""logininfor",
                        "isFrame""1",
                        "menuId"501,
                        "menuName""登录日志",
                        "menuType""C",
                        "orderNum""2",
                        "params": {},
                        "parentId"108,
                        "path""logininfor",
                        "perms""monitor:logininfor:list",
                        "visible""0"
                    }
                ],
                "component""system/log/index",
                "createTime"1521171180000,
                "icon""log",
                "isFrame""1",
                "menuId"108,
                "menuName""日志管理",
                "menuType""M",
                "orderNum""9",
                "params": {},
                "parentId"1,
                "path""log",
                "perms""",
                "visible""0"
            }
        ],
        "createTime"1521171180000,
        "icon""system",
        "isFrame""1",
        "menuId"1,
        "menuName""系统管理",
        "menuType""M",
        "orderNum""1",
        "params": {},
        "parentId"0,
        "path""system",
        "perms""",
        "visible""0"
    },
    {
        "children": [
            {
                "children": [],
                "component""monitor/online/index",
                "createTime"1521171180000,
                "icon""online",
                "isFrame""1",
                "menuId"109,
                "menuName""在线用户",
                "menuType""C",
                "orderNum""1",
                "params": {},
                "parentId"2,
                "path""online",
                "perms""monitor:online:list",
                "visible""0"
            },
            {
                "children": [],
                "component""monitor/job/index",
                "createTime"1521171180000,
                "icon""job",
                "isFrame""1",
                "menuId"110,
                "menuName""定时任务",
                "menuType""C",
                "orderNum""2",
                "params": {},
                "parentId"2,
                "path""job",
                "perms""monitor:job:list",
                "visible""0"
            },
            {
                "children": [],
                "component""monitor/druid/index",
                "createTime"1521171180000,
                "icon""druid",
                "isFrame""1",
                "menuId"111,
                "menuName""数据监控",
                "menuType""C",
                "orderNum""3",
                "params": {},
                "parentId"2,
                "path""druid",
                "perms""monitor:druid:list",
                "visible""0"
            },
            {
                "children": [],
                "component""monitor/server/index",
                "createTime"1521171180000,
                "icon""server",
                "isFrame""1",
                "menuId"112,
                "menuName""服务监控",
                "menuType""C",
                "orderNum""4",
                "params": {},
                "parentId"2,
                "path""server",
                "perms""monitor:server:list",
                "visible""0"
            }
        ],
        "createTime"1521171180000,
        "icon""monitor",
        "isFrame""1",
        "menuId"2,
        "menuName""系统监控",
        "menuType""M",
        "orderNum""2",
        "params": {},
        "parentId"0,
        "path""monitor",
        "perms""",
        "visible""0"
    },
    {
        "children": [
            {
                "children": [],
                "component""tool/build/index",
                "createTime"1521171180000,
                "icon""build",
                "isFrame""1",
                "menuId"113,
                "menuName""表单构建",
                "menuType""C",
                "orderNum""1",
                "params": {},
                "parentId"3,
                "path""build",
                "perms""tool:build:list",
                "visible""0"
            },
            {
                "children": [],
                "component""tool/gen/index",
                "createTime"1521171180000,
                "icon""code",
                "isFrame""1",
                "menuId"114,
                "menuName""代码生成",
                "menuType""C",
                "orderNum""2",
                "params": {},
                "parentId"3,
                "path""gen",
                "perms""tool:gen:list",
                "visible""0"
            },
            {
                "children": [],
                "component""tool/swagger/index",
                "createTime"1521171180000,
                "icon""swagger",
                "isFrame""1",
                "menuId"115,
                "menuName""系统接口",
                "menuType""C",
                "orderNum""3",
                "params": {},
                "parentId"3,
                "path""swagger",
                "perms""tool:swagger:list",
                "visible""0"
            }
        ],
        "createTime"1521171180000,
        "icon""tool",
        "isFrame""1",
        "menuId"3,
        "menuName""系统工具",
        "menuType""M",
        "orderNum""3",
        "params": {},
        "parentId"0,
        "path""tool",
        "perms""",
        "visible""0"
    },
    {
        "children": [],
        "createTime"1521171180000,
        "icon""guide",
        "isFrame""0",
        "menuId"4,
        "menuName""若依官网",
        "menuType""M",
        "orderNum""4",
        "params": {},
        "parentId"0,
        "path""http://ruoyi.vip",
        "perms""",
        "visible""0"
    }
]


select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.visible, ifnull(m.perms,'') as perms, m.is_frame, m.menu_type, m.icon, m.order_num, m.create_time
from sys_menu m
left join sys_role_menu rm on m.menu_id = rm.menu_id
left join sys_user_role ur on rm.role_id = ur.role_id
left join sys_role ro on ur.role_id = ro.role_id
left join sys_user u on ur.user_id = u.user_id
where u.user_id = #{userId} and m.menu_type in ('M', 'C') and m.visible = 0 AND ro.status = 0
order by m.parent_id, m.order_num




关联关系





store.dispatch('GenerateRoutes', { roles })出参:


{
    "msg""操作成功",
    "code"200,
    "data": [
        {
            "alwaysShow"true,
            "children": [
                {
                    "component""system/user/index",
                    "meta": {
                        "icon""user",
                        "title""用户管理"
                    },
                    "name""用户管理",
                    "path""user"
                },
                {
                    "component""system/role/index",
                    "meta": {
                        "icon""peoples",
                        "title""角色管理"
                    },
                    "name""角色管理",
                    "path""role"
                },
                {
                    "component""system/menu/index",
                    "meta": {
                        "icon""tree-table",
                        "title""菜单管理"
                    },
                    "name""菜单管理",
                    "path""menu"
                },
                {
                    "component""system/dept/index",
                    "meta": {
                        "icon""tree",
                        "title""部门管理"
                    },
                    "name""部门管理",
                    "path""dept"
                },
                {
                    "component""system/post/index",
                    "meta": {
                        "icon""post",
                        "title""岗位管理"
                    },
                    "name""岗位管理",
                    "path""post"
                },
                {
                    "component""system/dict/index",
                    "meta": {
                        "icon""dict",
                        "title""字典管理"
                    },
                    "name""字典管理",
                    "path""dict"
                },
                {
                    "component""system/config/index",
                    "meta": {
                        "icon""edit",
                        "title""参数设置"
                    },
                    "name""参数设置",
                    "path""config"
                },
                {
                    "component""system/notice/index",
                    "meta": {
                        "icon""message",
                        "title""通知公告"
                    },
                    "name""通知公告",
                    "path""notice"
                },
                {
                    "alwaysShow"true,
                    "children": [
                        {
                            "component""monitor/operlog/index",
                            "meta": {
                                "icon""form",
                                "title""操作日志"
                            },
                            "name""操作日志",
                            "path""operlog"
                        },
                        {
                            "component""monitor/logininfor/index",
                            "meta": {
                                "icon""logininfor",
                                "title""登录日志"
                            },
                            "name""登录日志",
                            "path""logininfor"
                        }
                    ],
                    "component""system/log/index",
                    "meta": {
                        "icon""log",
                        "title""日志管理"
                    },
                    "name""日志管理",
                    "path""log",
                    "redirect""noRedirect"
                }
            ],
            "component""Layout",
            "meta": {
                "icon""system",
                "title""系统管理"
            },
            "name""系统管理",
            "path""/system",
            "redirect""noRedirect"
        },
        {
            "alwaysShow"true,
            "children": [
                {
                    "component""monitor/online/index",
                    "meta": {
                        "icon""online",
                        "title""在线用户"
                    },
                    "name""在线用户",
                    "path""online"
                },
                {
                    "component""monitor/job/index",
                    "meta": {
                        "icon""job",
                        "title""定时任务"
                    },
                    "name""定时任务",
                    "path""job"
                },
                {
                    "component""monitor/druid/index",
                    "meta": {
                        "icon""druid",
                        "title""数据监控"
                    },
                    "name""数据监控",
                    "path""druid"
                },
                {
                    "component""monitor/server/index",
                    "meta": {
                        "icon""server",
                        "title""服务监控"
                    },
                    "name""服务监控",
                    "path""server"
                }
            ],
            "component""Layout",
            "meta": {
                "icon""monitor",
                "title""系统监控"
            },
            "name""系统监控",
            "path""/monitor",
            "redirect""noRedirect"
        },
        {
            "alwaysShow"true,
            "children": [
                {
                    "component""tool/build/index",
                    "meta": {
                        "icon""build",
                        "title""表单构建"
                    },
                    "name""表单构建",
                    "path""build"
                },
                {
                    "component""tool/gen/index",
                    "meta": {
                        "icon""code",
                        "title""代码生成"
                    },
                    "name""代码生成",
                    "path""gen"
                },
                {
                    "component""tool/swagger/index",
                    "meta": {
                        "icon""swagger",
                        "title""系统接口"
                    },
                    "name""系统接口",
                    "path""swagger"
                }
            ],
            "component""Layout",
            "meta": {
                "icon""tool",
                "title""系统工具"
            },
            "name""系统工具",
            "path""/tool",
            "redirect""noRedirect"
        },
        {
            "component""Layout",
            "meta": {
                "icon""guide",
                "title""若依官网"
            },
            "name""若依官网",
            "path""http://ruoyi.vip"
        }
    ]
}


相关推荐

评论 抢沙发

表情

分类选择