新手问题 RBAC 细颗粒度权限分配,有好的解决方案吗?

jmmbite · 2018年05月23日 · 最后由 jasl 回复于 2018年05月24日 · 3623 次阅读

按照 RBAC 的原则,五张表完成用户权限分配,权限操作 routes 自动入库,角色分配权限,用户分配角色

  1. permissions:
    • routes 自动获取所有外部操作 action,自动更新
  2. role_permissions:
    • 白名单方式分配权限,叶子节点回溯根节点,如果某个树枝节点某个权限失效,则叶子自动失效
  3. roles:
    • 首先分配 2 个根节点 role:
    • 公共访问权限:所有公共访问的 route
    • 管理权限:<用户基本管理权限>等,用户注册即分配基本管理权限
  4. user_roles
    • 给用户分配权限
  5. users
  6. topics

最后发现 RBAC 分配的角色管理权限基本是对所有对象操作的(除了创建者本身可以控制外)。 比如一个编辑有 edit 帖子的权限,那就可以编辑所有的帖子,无法精细到某个节点。

对于这种只可以在某些节点编辑管理的权限分配,是否有好的解决方案?

如果无法精细,有点用牛刀的赶脚<毕竟增加了 4 张表>, 不如直接在 User 表增加一个字段 role<1,2,3,4>来得高效,

楼上说的对,而且目前 Rails 下能做到你这个的只有我的方案啦

https://ruby-china.org/topics/36065

参考 java,很多这样项目。

casbin 这个可以参考一下,看不懂 golang 他还有 java 版 的实现

虽然答非所问,但建议你放弃 RBAC 这种流传甚广但其实并不灵活的解决方案, CBAC 了解一下。

jmmbite 关闭了讨论。 06月18日 23:55
jmmbite 重新开启了讨论。 06月18日 23:55
需要 登录 后方可回复, 如果你还没有账号请 注册新账号