跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • RBAC 模型如何定义权限,以及处理的时机?
未分類
30 8 月 2021

RBAC 模型如何定义权限,以及处理的时机?

RBAC 模型如何定义权限,以及处理的时机?

資深大佬 : seyoatda 9

目前用 golang 的 casbin 库来实现 RBAC 模型做基本的权限控制。有几下几点:

  1. 如果需要一个超级管理员,就是那种不能创建不能删除的、有所有权限的用户,这个用户的权限操作怎么能合并入普通角色的处理逻辑中呢?比如现在创建一个用户,我就是直接判断如果他的角色是超级管理员就不允许创建。但是感觉这种方式有点 hard code 的感觉。
  2. 权限的粒度。比如修改自己的密码和修改别人的密码这种请求肯定是不同的权限操作。但是这种权限的判断如果放在业务逻辑代码中是否侵入性会过强?
大佬有話說 (5)

  • 資深大佬 : JKeita

    控制到对应 url 及请求方式就够了,那种什么修改自己还是修改别人密码的特殊逻辑就放到业务逻辑。

  • 資深大佬 : xuanbg

    不需要存在什么超级管理员,只需要初始化一个用户,一个管理员角色,以及给管理员角色初始化必要的权限并把这个用户添加到角色就行了。
    权限的粒度一般都是一个独立的操作,大部分这种独立操作都能对应到 1 个或多个接口。所以,我可以在网关上面根据 url 来实现鉴权。从而使用户 /角色 /权限能够抽象出来,成为独立于业务存在通用能力。

  • 主 資深大佬 : seyoatda

    @xuanbg
    其实就是想内置一个应急使用的 root 用户,但是抛去这点来说其他的用 RBAC 问题都不大。
    @JKeita
    确实是大部分的操作都是可以对应到一个接口的。主要是涉及到权限系统本身的管理就比较复杂。比如角色的添加、用户删除这些的权限处理可能就需要写在业务逻辑里了。

  • 資深大佬 : hsluoyz

    @seyoatda 你好,我是 Casbin 作者。
    1. 用 ACL with superuser 模型即可: https://casbin.org/docs/en/supported-models
    2. 这种一般是用 ABAC 来解决:判断主体(用户)与客体(密码)的 owner 是不是一致: https://github.com/casbin/casbin/blob/master/examples/abac_model.conf 不过这样密码就是一个实体了,其实比较怪异,可以直接添加一个 set-password API 来设置自己密码,管理员针对其他用户( User )的所有字段具有修改权限。具体怎么设计可以有无数种方式,不同的设计会导致 Casbin 使用上的不同,需要具体问题具体分析。

  • 主 資深大佬 : seyoatda

    @hsluoyz 嗯嗯谢谢~。前阵子一直在看 casbin 的文档。感觉自己对权限这块的基础知识还需要加深学习哈哈,在设计和实现上有点踌躇不前。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具