• HZERO微服务平台08: 角色合并功能梳理


    说明:

    一个用户可以拥有多个角色, hzero有"角色合并"功能, 开启"角色合并"后对功能、接口有哪些影响?
    比如:
    登录时显示的菜单是所有角色的菜单还是当前角色的菜单?
    菜单管理时, 管理的是所有角色的菜单还是当前角色的菜单?
    角色管理时, 管理的是所有角色的菜单还是当前角色的菜单?
    网关鉴权时, 校验的是所有角色的权限还是当前角色的权限?

    相关功能、接口

    角色的获取

    CustomUserDetails对象:
    getRoleId() 获取当前角色
    roleMergeIds() 获取合并的角色列表

    登陆时查询菜单

    /iam/v1/menus/tree?lang=zh_CN&unionLabel=false

    登陆时查询菜单树;
    实测: 有合并角色的效果;

    /iam/v1/menus/tree?labels=IOSP_MENU&lang=zh_CN&roldId=142310205194166272&unionLabel=false 这里的roleId参数无效;

    代码考虑了角色合并:

    MenuController#listNavMenuTree
    MenuRepositoryImpl#selectRoleMenuTree
    List<Long> roleIds = self.roleMergeIds();
    List<Menu> menus = menuMapper.selectRoleMenus(roleIds, tenantId, finalLang, labels, unionLabel);
    

    【菜单配置】

    /iam/v1/0/menus/manage-tree?page=0&scope=CUSTOM&size=10

    只过滤了当前角色:

    MenuRepositoryImpl#selectMenuTreeInTenant
    menuParams.setRoleId(self.getRoleId());
    

    【角色管理】

    /iam/v1/roles/self/manageable-roles?adminRoleId=142310205194166272&page=0&size=10

    只过滤了当前角色:

    RoleController#listSelfManageableRoles
    RoleServiceImpl#selectSelfManageableRoles
    RoleRepositoryImpl#selectSelfManageableRoles
    params.setUserId(self.getUserId());
    

    权限检查

    /iam/v1/menus/check-permissions

    实测: 有合并角色的效果;

    考虑了合并角色

    MenuController#checkPermissions
    MenuRepositoryImpl#checkPermissionSets(java.util.List<java.lang.String>)
    results = menuMapper.checkPermissionSets(self.roleMergeIds(), codes);
    
    

    网关权限检查

    实测: 有合并角色的效果;

    user考虑了合并角色, client没有角色合并;

    CommonRequestCheckFilter#run
    roleIds = details.roleMergeIds();
    

    角色分配api时能够查看的api列表

    单据权限、数据权限, 应该可以;
    实测: 可以

    constant.DocTypeScript
                "<bind name=\"roleMergeIdList\" value=\"@xjyt.sjgs.core.oauth.DetailsHelper@getUserDetails().roleMergeIds()\" /> \n" +
    
    

    前端切换当前角色按钮的显示/隐藏

    如果返回的是空列表, 就不显示切换角色:
    /iam/v1/member-roles/self-roles

    MemberRoleController#listSelfRoles
    RoleRepositoryImpl#selectSelfCurrentTenantRoles
    // 如果只有一个层级的角色 则不返回角色列表,否则按层级分组,每个层级只返回一个角色
    
  • 相关阅读:
    Linux Commands
    sizeof操作符的使用详解
    在Vim中使用cscope
    MySQL学习笔记
    Online judge for leetcode
    使用Vim,让你工作效率更高
    Ext JS笔记
    安装J2EE开发环境
    这些都是什么啊
    QrCode二维码的实现原理
  • 原文地址:https://www.cnblogs.com/QIAOXINGXING001/p/15594754.html
Copyright © 2020-2023  润新知