RBAC 是英文(Role-Based Access Control)的缩写,也就是基于角色的访问控制。RBAC 的定义比较晦涩,我就以比较生动的形式来阐述什么是 RBAC。
RBAC 概念在 FleaPHP 的 RBAC 组件中,只有下列几项概念需要理解:
除了上述三个概念,要想 RBAC 系统能够正常工作,还需要用户信息管理器、角色信息管理器和访问控制器三个部件。
FleaPHP 中已经实现了上述三个部件,所以开发者要做的功能就比较简单了。 使用 RBACFleaPHP 中提供了 FLEA_Com_RBAC、FLEA_Com_RBAC_UsersManager 和 FLEA_Com_RBAC_RolesManager 三个部件,以及 FLEA_Dispatcher_Auth 调度器。 其中,FLEA_Com_RBAC_UsersManager 提供用户信息存储服务,而 FLEA_Com_RBAC_RolesManager 提供角色信息存储服务。FLEA_Com_RBAC 则和 FLEA_Dispatcher_Auth 结合,一起提供了访问控制能力。 下面我们来看看 RBAC 到底怎么工作的。 修改应用程序设置要使用访问控制功能,首先需要修改应用程序设置。让应用程序使用 FLEA_Dispatcher_Auth 调度器,而不是默认的 FLEA_Dispatcher_Simple 调度器。
FLEA_Dispatcher_Auth 调度器和 FLEA_Dispatcher_Simple 调度器的基本功能一样。但在调用控制器动作方法前,FLEA_Dispatcher_Auth 调度器会通过 FLEA_Com_RBAC 组件获取保存在 session 中的用户角色信息,然后再读取控制器的访问控制表(ACT)。最后调用 FLEA_Com_RBAC::check() 方法检查用户拥有的角色是否可以访问这个控制器及要调用的控制器动作。 验证通过,则控制器动作方法会被调用,否则将显示错误信息,或者调用应用程序设置 dispatcherAuthFailedCallback 指定的错误处理程序。 准备控制器的 ACT 文件设置好应用程序后,接下来要做的就是为控制器准备 ACT 文件。 ACT 文件和控制器文件同名,并且保存在同一个目录下,只是扩展名为 ACT 文件的内容通常使用下面的格式:
可以看到,ACT 文件只是单纯的返回一个数组。这个数组遵循下面的格式:
在上面的格式中,角色名可以是多个,例如“POWER_USER, MANAGER”。只需要用“,”分隔多个角色名就可以了。 通常,我们只需要为控制器指定 为了便于开发,FleaPHP 预定义了几个角色,分别是:
特别注意,上述四个预定义角色并不是字符串,而是常量。因此必须以
原贴地址:http://hi.baidu.com/xsite/blog/item/3ac31508d2a36c33e82488e8.html |