RBAC权限模型概述

RBAC即role-based access control,基于角色的访问控制

通过角色来管理用户对系统资源的访问权限。RBAC是一种权限管理模型,核心思想是分离用户与具体权限,通过角色作为中介来实现用户与权限的关联

RBAC的三个基本元素

User:访问者

Role:User和Permission的桥梁,他是权限的集合,用户通过被赋予不同的角色来获取相应的权限

Permission:对系统资源的访问能力/执行特定操作的能力

优点:

简化权限管理:只需要分配角色给访问者即可

安全并且易于维护与拓展

实现方式:

数据库设计:

  • 用户表
  • 角色表
  • 权限表
  • 用户-角色关联表
  • 角色-权限关联表

 个人样例代码,

复制代码
    private List<String> searchAuthoritiesByUserId(Long id) {
        // 根据user_id获取role_id
        List<Long> roles_id = userRolerMapper
                .selectList(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, id))
                .stream()
                .map(SysUserRole::getRoleId)
                .collect(Collectors.toList());
        // 根据role_id获取menu_id
        Set<SysRoleMenu> menus=new HashSet<>();
        roles_id.forEach(role_id->{
            List<SysRoleMenu> sysRoleMenus = roleMenuMapper.selectList(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, role_id));
            menus.addAll(sysRoleMenus);
        });
        // 根据menu_id获取具体的menu_name
        List<String>menuNames=new ArrayList<>();
        menus.forEach(menu->{
            Long roleId = menu.getRoleId();
            menuNames.add(menuMapper.selectById(roleId).getMenuName());
        });
        return menuNames;
    }
复制代码

 

posted @   天启A  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2023-07-22 假期小结2hadoop环境配置
点击右上角即可分享
微信分享提示