V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
1rookie1
V2EX  ›  Java

关于权限控制问题?

  •  
  •   1rookie1 · 2020-08-10 10:07:12 +08:00 · 3861 次点击
    这是一个创建于 1568 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想实现的就是每一个用户的权限各不相同,可以精确控制。然后我现在的设计思路是分四张表,用户表、用户角色关联表、角色表、权限表。其中角色和权限关联,查询用户时,以用户角色管理表为主表,查询用户表和角色表,从而查询出该用户具有哪些权限。 我的问题是,我想实现的这种效果,这种方式是否是最优解?

    14 条回复    2020-08-12 10:32:15 +08:00
    pws22
        1
    pws22  
       2020-08-10 10:25:25 +08:00
    可以再加张用户与权限的关联表,用户可以没有角色,但是用户会有权限,或者用户会存在角色之外的一些额外权限
    sparrowMan
        2
    sparrowMan  
       2020-08-10 10:35:28 +08:00
    RBAC 基于角色的权限访问控制( Role-Based Access Control ) Google 搜索看
    takemeaway
        3
    takemeaway  
       2020-08-10 10:42:02 +08:00
    需要这么多表吗? 不需要。。。
    你要把权限抽象化,看看操作系统权限是怎么设计的吧。
    644/777 。。。。
    bluehr
        4
    bluehr  
       2020-08-10 10:58:12 +08:00
    就用简单的 RBAC 5 表结构就行了, 用户表、角色表、权限表,用户角色关联表,角色权限关联表, 用户的权限通过用户所关联的角色查询出来就好了。
    HolmLoh
        5
    HolmLoh  
       2020-08-10 11:11:10 +08:00
    看你需要的权限颗粒度,在颗粒度细的情况下无脑学操作系统二进制权限管理后期拓展只会自找麻烦
    hugee
        6
    hugee  
       2020-08-10 11:28:26 +08:00
    这样处理太繁琐了
    weipt
        7
    weipt  
       2020-08-10 11:48:50 +08:00
    4 张表不够,还差一张角色和权限关联的表
    qwerthhusn
        8
    qwerthhusn  
       2020-08-10 12:14:02 +08:00
    select distinct privilege
    from t_role_privilege
    where role in (
    select role
    from t_user_role
    where t_user_role.user = $userID
    )
    panhongkui
        9
    panhongkui  
       2020-08-10 12:31:27 +08:00
    简单的 RBAC 五张表就够了,进一步扩展权限表可以拆分成菜单表和资源表,加入用户组。
    wangyzj
        10
    wangyzj  
       2020-08-10 14:40:20 +08:00
    建议参考 rbac
    beginor
        11
    beginor  
       2020-08-10 15:17:52 +08:00 via Android
    现在权限设计应该考虑 abac 了吧
    CainWang
        12
    CainWang  
       2020-08-10 23:06:10 +08:00
    这就是最普遍的 RBAC 吧
    jzmws
        13
    jzmws  
       2020-08-10 23:54:33 +08:00
    @sparrowMan 正解 这个可以解决 90.99% 的权限问题
    xzour
        14
    xzour  
       2020-08-11 08:22:29 +08:00
    既然涉及权限,我也想问一个,比如在 OA 系统里,设置上下级看单权限, 上级能看下级的,下级只能看自己的,这个 5 张表里面应该怎么设计
    wc951
        15
    wc951  
       2020-08-12 10:32:15 +08:00 via Android
    每个用户权限都不同的话授权操作是不是太繁琐了,你看数据库里就是这么授权的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1070 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:48 · PVG 03:48 · LAX 11:48 · JFK 14:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.