web系统中ACL, RBAC等鉴权系统的异同

不同框架, 权限系统的设计理念千差万别, 本文仅是片段性的说法


ACL, 强调面向资源, 描述对具体资源对象的操作鉴权

有诸如Zend_ACL(好用), symfony-acl(不好用)等实现。

应用场景如:对一条帖子资源的增删改鉴权。 

该权限机制中, 权限部分是由特定帖子对象及增删改等操作共同构成的。

在授权时,是将 “资源---操作” 组合授权给用户



RBAC,强调面向角色的权限鉴权, 描述对功能节点的鉴权

有诸如ThinkPHP-RBAC, Yii-RBAC等实现。

应用场景如: 依据不同用户角色显示不同后台菜单或功能,  依据不同角色在用户请求URL调用某个控制器方法时对应做限制 等等



综合来看, ACL的权限中心是资源对象, RBAC的权限中心是功能节点


因此可以看出, 其实两个鉴权系统解决的是不同方面的问题。

若需要对数据库记录的操作安全进行鉴权可使用ACL

若是需要安全显示站点各功能或者限制特定用户对控制器方法的URL请求, 可使用RBAC来鉴权。


以上,纯粹是个人理解, 若有异议, 欢迎讨论。

你可能感兴趣的:(Web,权限,acl,rbac)