Skip to content

MenuController.java:authRoutes中返回的路由需要对用户的租户身份进行检查 #35

Description

@old6ma

问题描述
该函数的功能应该是返回输入用户所拥有权限的路由,该函数获取资源的方式是通过输入用户的角色id所获得的,但这里应该在用户角色的基础之上,进一步检查是否为admin租户还是普通租户,区分租户身份来返回不同租户可访问的资源,所以这里需要检查租户身份的不同再对路由进行返回
该函数以及其调用的函数如下
MenuController.java:authRoutes:
/** * 获取配置的角色权限 */ @GetMapping("auth-routes") @ApiOperationSupport(order = 12) @Operation(summary = "菜单的角色权限") public R<List<Kv>> authRoutes(BladeUser user) { if (Func.isEmpty(user) || user.getUserId() == 0L) { return null; } return R.data(menuService.authRoutes(user)); }
MenuServiceImpl.java:authRotes:
@Override public List<Kv> authRoutes(BladeUser user) { if (Func.isEmpty(user)) { return null; } List<MenuDTO> routes = baseMapper.authRoutes(Func.toLongList(user.getRoleId())); List<Kv> list = new ArrayList<>(); routes.forEach(route -> list.add(Kv.init().set(route.getPath(), Kv.init().set("authority", Func.toStrArray(route.getAlias()))))); return list; }

以下为MenuServiceImpl.java:authRotes的两个同文件内的函数代码

	@Override
	public List<MenuVO> grantTree(BladeUser user) {
		return ForestNodeMerger.merge(user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantTree() : baseMapper.grantTreeByRole(Func.toLongList(user.getRoleId())));
	}
	@Override
	public List<MenuVO> grantDataScopeTree(BladeUser user) {
		return ForestNodeMerger.merge(user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantDataScopeTree() : baseMapper.grantDataScopeTreeByRole(Func.toLongList(user.getRoleId())));
	}

从这两个函数可以进一步确定,路由的分配会与租户身份相关,如统一服务下的管理员租户和普通租户所拥有的路由应该是不同的
建议添加权限检查:
user.getTenantId().equals(BladeConstant.ADMIN_TENANT_ID) ? baseMapper.grantTree() : baseMapper.grantTreeByRole(Func.toLongList(user.getRoleId()))

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions