V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
davidoff567
V2EX  ›  问与答

关于 RBAC 模型经典 5 表中的 permission 表问题

  •  
  •   davidoff567 · 335 天前 · 1078 次点击
    这是一个创建于 335 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第一次接触 RBAC 模型,我想把权限控制细分到按钮级别,设计表的时候有 2 个问题查了半天,发现没有标准答案,想看看大家的思路。 1 、在给角色分配权限时,实际操作的仅仅是 [角色权限关联表] 吗? 2 、permission 表中的数据大家怎么对待的?主流做法是在表里维护一整套全量权限数据吗?

    第 1 条附言  ·  335 天前
    我这边现状是:用户表->用户角色关联表->角色表->角色权限关联表->权限表
    第 2 条附言  ·  333 天前
    已解决,谢谢大家
    12 条回复    2023-04-29 06:26:46 +08:00
    xxmaqzas
        1
    xxmaqzas  
       335 天前   ❤️ 1
    主流方案可以参考 ruoyi ,不满足需求自行扩展即可
    renmu
        2
    renmu  
       335 天前   ❤️ 1
    对啊,给用户分配权限就可以了。

    我们权限表数据是由前端添加的。
    renmu
        3
    renmu  
       335 天前   ❤️ 1
    想要精确到按钮级别就会很麻烦,每个按钮都要去配置权限,可能还要配置使用的接口。
    youngce
        4
    youngce  
       335 天前   ❤️ 1
    想要前端精确到菜单的话,建议单独搞一个 menu 表,可以配置 menu 与 permission ,前端只关心 menu 里面这个用户有那些按钮、侧边栏。

    后端业务自己对过来请求和 permission 进行二次校验。
    v2eb
        5
    v2eb  
       335 天前
    角色关联权限
    权限关联菜单
    davidoff567
        6
    davidoff567  
    OP
       335 天前
    @renmu 前端添加 指的是允许用户(超级管理员)操作权限表数据吗?如果是的话 假设角色 A 和角色 B 同时拥有页面 C 的增删改查 4 个按钮权限,当角色 A 删除权限表内的所有页面 C 数据时,后端要先查出拥有整个权限的角色;新增 D 角色时 假如页面 C 的按钮权限数据被删干净了。以上的新增、删除例子 都会中断用户的操作吧,允许权限表数据被前端操作的话 会不会太灵活了?
    davidoff567
        7
    davidoff567  
    OP
       335 天前
    @youngce menu 表和 permission 表 中的数据都应该是静态的吗?我刚才合计了一下,权限表数据似乎应该读配置文件来获取,而不是允许用户在页面上维护。拿新增、删除角色的场景举例子,角色大概率和权限表数据高度耦合,动一处会影响全局,我理解的对吗?
    davidoff567
        8
    davidoff567  
    OP
       335 天前
    @v2eb 对 它们中间还有专门表达关联关系的表。你的意思是权限表后面再搞一个菜单表吗?权限表里面应该也能表达吧, 我这边现状是:用户表->用户角色关联表->角色表->角色权限关联表->权限表
    v2eb
        9
    v2eb  
       335 天前
    权限对应后台接口, 有菜单表, 对应每个页面。
    hhjswf
        10
    hhjswf  
       335 天前 via Android
    权限表里包括了菜单,树级结构
    miv
        11
    miv  
       335 天前 via Android
    这玩意儿有什么标准答案?直接参考若依完事。
    renmu
        12
    renmu  
       335 天前 via Android   ❤️ 1
    @davidoff567 a ,b 有按钮权限不代表有配置权限的权限,反正角色这玩意最后是交给运营自己配的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1186 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:10 · PVG 07:10 · LAX 16:10 · JFK 19:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.