标签:
ACL, 强调面向资源, 描述对具体资源对象的操作鉴权, 有诸如Zend_ACL(好用), symfony-acl(不好用)等实现
应用场景如:对一条帖子资源的增删改鉴权, 整个鉴权流程中, 权限部分是由具体帖子对象和增删改等操作共同构成的。授权的结果是将 “资源---操作” 组合授权给用户。
RBAC,强调面向角色的权限节点鉴权, 描述对功能节点的鉴权,有诸如ThinkPHP-RBAC, sylius/rbac-bundle(symfony)等实现
应用场景如: 依据不同用户角色显示不同后台菜单或功能, 依据不同用户角色判断用户是否能请求调用某个控制器方法 等等
综合来看, ACL的权限中心是资源对象(数据库中), RBAC的权限中心是功能节点(没有对应数据记录)。
因此可以看出, 其实两个鉴权系统解决的是不同方面的问题。若需要对数据库记录的操作安全进行鉴权可使用ACL, 若是需要安全显示站点各功能或者限制特定用户对控制器方法的请求, 可使用RBAC来鉴权。
以上,纯粹是个人理解, 若有异议, 欢迎讨论。
标签:
原文地址:http://my.oschina.net/u/2400083/blog/503998