首页 > 其他分享 >RBAC权限模型概述

RBAC权限模型概述

时间:2024-07-22 18:29:18浏览次数:8  
标签:角色 menu RBAC role 概述 权限 id

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;
    }

 

标签:角色,menu,RBAC,role,概述,权限,id
From: https://www.cnblogs.com/kun1790051360/p/18316348

相关文章

  • 1、Flink 的 Table API & SQL API 概述
    1)概览1.TableAPI&SQLFlink有两种关系型API来做流批统一处理:TableAPI和SQL。TableAPI是用于Scala和Java语言的查询API,它可以用一种非常直观的方式来组合使用选取、过滤、join等关系型算子。FlinkSQL是基于ApacheCalcite来实现的标准SQL。无论输入......
  • Python 中的 azure.ai.translation.document - 无法使用当前权限访问源文档位置
    我在使用Python中的azure.ai.translation.document库时遇到问题。我已经在Azure中设置了翻译服务以及带有两个容器的Blob存储。我已使用“用户委托密钥”创建了SAS连接。一种用于源(读取/列表),一种用于目标(写入/列表)。例如我尝试运行Python程序,但源b......
  • 【QT】QT 概述(背景介绍、搭建开发环境、Qt Creator、程序、项目文件解析、编程注意事
    一、Qt背景介绍1、什么是QtQt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供了建立艺术级图形界面所需的所有功能。它是完全面向对象的,很容易扩展。Qt为开发者提供了一种基于组件的开发模式,开发者可以通过简单的拖拽和组合来实现复杂的应用程......
  • Python第九章(面向对象基础--属性,继承,dir查看,内存地址,权限等等和银行账户题目,圆的面积
    面向对象创造对象示例代码:类的名字用小驼峰命名法#编写Person类classPerson():passclassCat:#,小括号可以省略pass#对象名=类名per=Person()c=Cat()#小括号不能省略print(type(per))print(type(c))代码结果:<class'__main__.Person'><class'__mai......
  • Java语言概述
    1.常用的DOS命令进入DOS操作窗口:按下Windows+R键盘,打开运行窗口,输入cmd回车,进入到DOS的操作窗口。常用指令:操作说明盘符名称:盘符切换,如:E:表示切换到E盘dir列出当前目录下的文件及文件夹cd目录进入指定的单级目录cd目录1\目录2\...进入指......
  • PermissionError: [Errno 13] 权限被拒绝: 生产服务器上的“/root/.u2net”
    我正在使用rembg,它可以在我的本地计算机上运行,​​但在生产中会引发错误。所以我认为这与linux操作系统目录权限有关。这是服务器的完整日志:Traceback(mostrecentcalllast):File"/home/airnet-technologies-test-bgrm/htdocs/test-bgrm.airnet-technologies.com......
  • HDFS概述
    Hadoop的分布式文件系统hadoop的三大核心子项目(HDFS,YARN,MapReduce)之一,用来解决海量数据存储问题优点:海量数据存储,典型文件大小GB~TB,百万以上文件数量,PB以上数据规模(文件切分分散存储,128M)高容错(多副本策略),高可用(HA,安全模式),高可扩展(10K节点规模)构建成本低(构建在廉价商用机器......
  • influxdb 查看和设置用户权限
    转载请注明出处:1.查看用户>SHOWUSERS运行示例:>SHOWUSERSuseradmin---------admintruereadonlyfalsemonitor_userfalse>2.创建用户CREATEUSER"myusername"WITHPASSWORD'mypassword'WITHALLPRIVILE......
  • 【攻防技术系列+权限维持】SUID后门
    在介绍linux提权的时候,曾说过SUID。什么是suid❓suid全称是SetownerUserIDuponexecution。这是Linux给可执行文件的一个属性,s标志。通俗的理解为其他用户执行这个程序的时候可以用该程序所有者/组的权限。需要注意的是,只有程序的所有者是0号或其他superuser,同时拥有su......
  • Win11 如何更改管理员权限,修改hosts内容
    一、找到hosts文件所在位置C:\Windows\System32\drivers\etc\hosts二、右键点击hosts,选择属性三、点击第二个安全,进入编辑界面四、点击添加,在最后一个窗口输入Everyone,单击确定五、出来之后第一个第一个页面相比之前多了Everyone,点击Everyone,在第二个窗口中的写入选项......