414348489
V2EX  ›  问与答

关于 acl 权限控制

  •  
  •   414348489 · May 30, 2016 · 1864 views
    This topic created in 3639 days ago, the information mentioned may be changed or developed.
    各位大神, cms 中现在要实现 acl
    现在用了 5 张表
    1 : roles 角色
    2 : permissions 权限
    3 : permission_role 权限—角色对应表
    4 : role_user 角色—用户对应表
    5 : users 用户表
    但这样只能对角色进行控制,不能细分到用户的权限,如果要细分到同角色不同用户的权限,该怎么改进下,谢谢
    6 replies    2016-05-30 16:00:40 +08:00
    czzhengkw
        1
    czzhengkw  
       May 30, 2016   ❤️ 1
    你把角色当用户,一个用户一个角色,你就能控制到用户了……

    不过,你这个需求并不合理
    如果 A 用户有 100 个权限, B 用户要跟 A 用户同样 100 个权限,你是不是要授权 200 次?
    如果使用角色管理,就能解决这个问题了……
    414348489
        2
    414348489  
    OP
       May 30, 2016   ❤️ 1
    大神在哪里!!!!
    kfll
        3
    kfll  
       May 30, 2016   ❤️ 1
    freeipa 有这样的 acl 设定,不过他的存储不是 sql

    user 可以组合成 group ,两者属于用户系统; permission 可以组合成 role ,两者属于权限系统; permission 、 role 都可以指定给 user 、 group ;

    做 acl 的时候实际起作用的不是 user ~ permission 么,嵌套性能问题可以用缓存解决
    tabris17
        4
    tabris17  
       May 30, 2016   ❤️ 1
    RBAC 的话,理论上权限只切分到角色的粒度,如果两个用户权限不一致,那么就应该分成不同角色
    tabris17
        5
    tabris17  
       May 30, 2016   ❤️ 1
    另外,一个用户可以对应多个角色,用户间的权限细微差异,可以通过这点来实现
    Ouyangan
        6
    Ouyangan  
       May 30, 2016
    恰好在写这块业务,增加 user_permission , 登录查权限的时候查两张表求并集
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1288 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 17:06 · PVG 01:06 · LAX 10:06 · JFK 13:06
    ♥ Do have faith in what you're doing.