教程栏目

joomla中文网出品的官方教程

如果你的客户有不只一个人操作网站,那么应该考虑是否应该提供一下基于角色的ACL.下面我们就来讨论一下为什么要使用"基于角色的ACL"而不是用以前1.5的方法?

 

在Joomla1.5时代,joomla存在一个很明显的问题,那就是不能够提供多种角色来管理网站,因此,有一些公司不愿意使用joomla来构建网站。而在j2.5X中,这个问题已经有了喊好的解决。

在 joomla1.5中,我们通常给用户的权利往往比他们需要的大。有时候一个用户可能仅仅需要执行组件的某一个操作,但这个操作需要管理员的权限。没有办 法,我们只能够给他管理员的权限,这样才能够让他执行这个操作。而事实上,该用户在其他的地方根本用不上管理员的权限。最安全的做法就是只给用户他需要的 权限。

看一下1.5和2.5的ACL

               


什么是基于角色的ACL?

 角 色往往代表一些逻辑任务或者公司或者组织的一些职责。它具备这样的特点,角色是可以分配到具体的一个人的身上,并且它可以传递到其他的人,也可以有多个人 共享一个角色。角色是一种概念。举一个例子,在一个班级中有老师,学生,学生中又有班长组长,这里的老师,学生,班长,组长就是所谓的角色。每一个角色都 具备不同的能力范围。

用一个订单系统来举例。我们可以定义一个能够访问所有资源的角色,叫全能角色(order fulfillment).那么扮演这个角色的个体就具有访问订单,访问购物车信息,改变订单状态,改变产品信息等一些活动的能力了。同样的,我们可以定 义一个只能访问购物车的角色,或者只能够访问订单的角色。一个个体(具体的用户)可以仅仅只扮演一种角色,也可以同时扮演多种角色。一个用户的权利和他扮 演的角色是相关的。


如何来定义角色?

  1. 我们应该遵循“权利最小化”原则,你分配的原则能够刚好完成用户的任务就行了,不要过多,也不能少。
  2. 我们应该遵循“职责分开”原则,一个角色的需要完成的任务和所负担的责任不应该和其他角色的相同。
    1.  一个角色代表了一类用户能够访问的权限
    2.  一个人可以扮演一个或者多个角色
    3.  多个人可以同时扮演一个角色
    4.  角色应该可以容易的添加,删除,或者在其他用户之间转移
    5.  角色的名称应该和业务逻辑相关。

 上面的这些要求,在J1.5中很多是实现不了,但是在J2.5X中就可以实现。J2.5X可以实现上面的所有要求,但是并不强迫我们必须实现这些。事实上,J2.5默认的ACL看起来就是在模拟J1.5的ACL.

基于角色的ACL看起来不同于我们在J25后台看到的ACL。

ACL 的提出者Sander Potjer说,他更喜欢移除掉默认的用户组并且完全依据工程的需要来重构新的用户组。这样我们可以更好的分配权限。对于一个基于角色的ACL的解决方案 来说,这是非常重要的。但是,直到最近,这种思想并没有被大量的采纳。由于许多的组件开发者没有提供基于角色的ACL在J1.6/J1.7/j2.5的组 件开发中,这就导致我们不能用自定义的组来访问这些组件,我们必须将用户关联到“manager”或者“administrator”.值得幸运的是,当 组件缺失一些基本的ACL控制的时候,当前版本的ACL控制能够自动的提供。最后,我们可以忽略或者完全删除“manager”和 “administrator”.如果你实现了一个100%基于角色的ACL控制,你就不再需要“manager”和“administrator”了。

 


基于角色的ACL能够给我带来什么好处?

由 于基于角色的ACL非常的接近公司或者组织的业务逻辑,因此组织的领导者非常清楚他们的公司有哪些角色。如果我们能够提供一个基于角色的ACL控制,那么 公司的上层人士就会更加容易接受这样的CMS.因为他可以方便的按照自己的意愿来恰到好处的给每一个员工分配他们的权利。

在真实的业务逻辑中,我们还需要考虑周期,员工和员工的升迁,这些都会造成角色的改变。有时候一个员工同时要扮演多个角色。使用基于角色的ACL控制就能够容易的实现这些需求。

上面的截图就演示基于角色的ACL的好处。首先,它非常的直观,你可以按照你的业务逻辑来分配权限。只需要在你愿意分配的权限前打勾就行了。另外,ACL控制和你的组织的真实结构是分开的。

第二你可以自由的组织和分配每一个用户的权限。

第三,我们可以做到每一个用户只获得他们必须的权限。

 


换一种观点来看ACL

这 篇文章使用另一个观点来看到ACL,但是这个什么稀奇的事,早在1996的时候就有人提出过这种观点。RBAC(Role-Based Access Control),当时这种观点在商业和信息系统中非常的流行。事实上,新的joomla ACL系统类似元RBAC.如果我们用joomla的用户组来表示角色的概念,而不是将他们解释为用户类型。所以joomla已经提供了建立一个严格意义 上的基于角色控制的系统的基础。

这个改变不仅仅使得j2.5X比j1.5X更加安全,同时他还为多个用户同时管理网站提供更好的解决方案。

 感悟:英语能力确实有待提高,翻译这篇文章用了大约一下午的时间。还不清楚自己是否完全弄懂。有待加强啊!

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前

第1章 Joomla入门教程

第3章 C计划

第5章 E计划

第6章 H计划

第7章 G计划

第9章 运行环境

第11章 主从与集群

第12章 模块开发

第13章 插件开发

第14章 j2.x组件开发教程

第15章 页面定制教程

第16章 页面构造器