关于在基于角色访问控制的问题

问一下里面的item有什么用途,个人不大理解

还有就是为什么不采用control与action的控制方式来控制访问

第一个我也太清楚item是指哪里的item

第二个

还有就是为什么不采用control与action的控制方式来控制访问

这个你可以写一个Controller的子类,然后添加一个过滤器filter方法

通过

$module = ucfirst(Yii::app()->controller->module->id);

$controller = ucfirst($filterChain->controller->id);

$action = ucfirst($filterChain->action->id);

获得路由动作,然后再进行权限判断

其它controller继承这个类,就可以实现全局的控制访问了.

  1. 定义授权等级体系

定义授权等级体总共分三步:定义授权项目,建立授权项目之间的关系,还要分配角色给用户。 authManager 应用组件提供了用于完成这三项任务的一系列 API 。

要定义一个授权项目,可调用下列方法之一,具体取决于项目的类型:

CAuthManager::createRole


CAuthManager::createTask


CAuthManager::createOperation

建立授权项目之后,我们就可以调用下列方法建立授权项目之间的关系:

[color="#FF0000"]CAuthManager::addItemChild


CAuthManager::removeItemChild[/color]


CAuthItem::addChild


CAuthItem::removeChild

最后,我们调用下列方法将角色分配给用户。

CAuthManager::assign


CAuthManager::revoke

下面的代码演示了使用 Yii 提供的 API 构建一个授权体系的例子。。。。

item就是这个里面的,详见http://www.yiiframework.com/doc/guide/1.1/zh_cn/topics.auth#sec-5

你看仔细些就有了

概览(Overview)

在 Yii 的 RBAC 中,一个基本的概念是 [color="#FF0000"]授权项目(authorization item)。 一个授权项目就是一个做某件事的许可(例如新帖发布,用户管理)。根据其粒度和目标受众, 授权项目可分为 操作(operations),任务(tasks) 和 角色(roles)[/color]。 一个角色由若干任务组成,一个任务由若干操作组成, 而一个操作就是一个许可,不可再分。 例如,我们有一个系统,它有一个 管理员 角色,它由 帖子管理 和 用户管理 任务组成。 用户管理 任务可以包含 创建用户,修改用户 和 删除用户 操作组成。 为保持灵活性,Yii 还允许一个角色包含其他角色或操作,一个任务可以包含其他操作,一个操作可以包括其他操作。