关于权限管理的一点小思考
程序员文章站
2022-04-15 20:29:00
...
做任何系统组织结构和权限管理是必不可少的,同时也是最重要的,实现的好坏直接影响到系统的易用性和灵活性。走过看过这么多的系统,发现真正做得好的,易用性强系统却不多。
经典的RBAC要求先将权限封装成角色,用户通过角色获取权限,权限(或称许可)还由多个操作组成。
一般情况下,特别是对互联网的应用,严格的RBCA反而很难用。象exshop,淘宝等都允许直接将权限授给用户。管理员即可以通过给用户分配角色进行授权,也可以直接将权限分配给用户。
下面是淘宝卖家后台的权限分配界面:
由于角色内的权限是相对固定的,但很可能在分配权限时,需要在角色的基础上做“微调”。
举个例子,张三是一个普通员工,但是他除普通员工之外,领导还希望其干一项其它的A工作(权限),如果是按严格的RBAC,管理员必须将A工作定义为一个角色ARole,然后再将ARole分配给张三。这无疑会让授权分配的工作变得很麻烦,且会造成系统中存在很多变了味的“角色”。
因此传统的RBAC可能在严格进行岗位分工的应用项目中可能比较适合,但是在互联网这个对*性和简单性方面要求特别高的应用场景来说,传统的RBAC不太适用,应该采用“角色+权限”联合授权的方式更加适用一些。
经典的RBAC要求先将权限封装成角色,用户通过角色获取权限,权限(或称许可)还由多个操作组成。
一般情况下,特别是对互联网的应用,严格的RBCA反而很难用。象exshop,淘宝等都允许直接将权限授给用户。管理员即可以通过给用户分配角色进行授权,也可以直接将权限分配给用户。
下面是淘宝卖家后台的权限分配界面:
由于角色内的权限是相对固定的,但很可能在分配权限时,需要在角色的基础上做“微调”。
举个例子,张三是一个普通员工,但是他除普通员工之外,领导还希望其干一项其它的A工作(权限),如果是按严格的RBAC,管理员必须将A工作定义为一个角色ARole,然后再将ARole分配给张三。这无疑会让授权分配的工作变得很麻烦,且会造成系统中存在很多变了味的“角色”。
因此传统的RBAC可能在严格进行岗位分工的应用项目中可能比较适合,但是在互联网这个对*性和简单性方面要求特别高的应用场景来说,传统的RBAC不太适用,应该采用“角色+权限”联合授权的方式更加适用一些。
引用
其实象Oracle这样的数据库系统,也不是严格的RBAC,也是采用“角色+权限”联合授权的方式。
上一篇: Dubbo
下一篇: Java之设计模式之Singleton