包 | system.web.auth |
---|---|
继承 | abstract class CAuthManager » CApplicationComponent » CComponent |
实现 | IApplicationComponent, IAuthManager |
子类 | CDbAuthManager, CPhpAuthManager |
源自 | 1.0 |
版本 | $Id: CAuthManager.php 3515 2011-12-28 12:29:24Z mdomba $ |
源码 |
CAuthManager是授权管理类的基类。
CAuthManager继承于CApplicationComponent,实现了一些 在授权管理类中的通用方法。
CAuthManager和它的具体子类实现了 基于用户角色访问控制(RBAC)。
主要思想是,层级权限是由 授权项目来管理的。高层的项目 继承了低层的项目权限。角色是最高级的授权项目, 会赋予给每个用户。一个用户所拥有的权限, 是由他的角色所继承的授权项目决定的。
使用授权管理器包含两个方面。第一,授权等级和任务 必须要既定的。CAuthManager和它的子类 提供API来完成这个任务。开发人员需要开发一些GUI, 使这些操作更加直观的展示给最终用户。第二,开发人员在程序里面适当的位置 调用IAuthManager::checkAccess来检测当前用户 是否含有该操作的权限。
CAuthManager继承于CApplicationComponent,实现了一些 在授权管理类中的通用方法。
CAuthManager和它的具体子类实现了 基于用户角色访问控制(RBAC)。
主要思想是,层级权限是由 授权项目来管理的。高层的项目 继承了低层的项目权限。角色是最高级的授权项目, 会赋予给每个用户。一个用户所拥有的权限, 是由他的角色所继承的授权项目决定的。
使用授权管理器包含两个方面。第一,授权等级和任务 必须要既定的。CAuthManager和它的子类 提供API来完成这个任务。开发人员需要开发一些GUI, 使这些操作更加直观的展示给最终用户。第二,开发人员在程序里面适当的位置 调用IAuthManager::checkAccess来检测当前用户 是否含有该操作的权限。
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
authItems | array | 返回指定类型和用户的授权项。 | IAuthManager |
behaviors | array | 这个应用组件附加的行为。 这此行为将在应用组件调用init时附加在应用组件上。 请参照CModel::behaviors如何指定此属性值。 | CApplicationComponent |
defaultRoles | array | 隐式赋予给所有用户的角色名字列表。 这些角色不需要显式赋予给所有用户。 当调用checkAccess,会首先检查这些角色。 为了能够提高程序效率,这样的角色越少越好。 一个典型的用法是,定义一个“authenticated”角色,然后 把它关联到一个业务逻辑规则,这个规则是用来验证当前用户的。 然后在这个属性声明“authenticated”以便应用到 所有的验证用户。 | CAuthManager |
isInitialized | boolean | 检查应用组件是否已经初始化。 | CApplicationComponent |
operations | array | 返回操作。 | CAuthManager |
roles | array | 返回角色。 | CAuthManager |
showErrors | boolean | 允许业务规则错误报告。 | CAuthManager |
tasks | array | 返回任务。 | CAuthManager |
公共方法
受保护方法
方法 | 描述 | 定义在 |
---|---|---|
checkItemChildType() | 检查项目类型以确定一个子项目已经赋予给一个父项目。 | CAuthManager |
属性详细
defaultRoles
属性
public array $defaultRoles;
隐式赋予给所有用户的角色名字列表。 这些角色不需要显式赋予给所有用户。 当调用checkAccess,会首先检查这些角色。 为了能够提高程序效率,这样的角色越少越好。 一个典型的用法是,定义一个“authenticated”角色,然后 把它关联到一个业务逻辑规则,这个规则是用来验证当前用户的。 然后在这个属性声明“authenticated”以便应用到 所有的验证用户。
operations
属性
只读
public array getOperations(mixed $userId=NULL)
返回操作。 这个方法是IAuthManager::getAuthItems的快捷方式
roles
属性
只读
public array getRoles(mixed $userId=NULL)
返回角色。 这个方法是IAuthManager::getAuthItems的快捷方式。
showErrors
属性
(可用自 v1.1.3)
public boolean $showErrors;
允许业务规则错误报告。
tasks
属性
只读
public array getTasks(mixed $userId=NULL)
返回任务。 这个方法是IAuthManager::getAuthItems的快捷方式
方法详细
checkItemChildType()
方法
protected void checkItemChildType(integer $parentType, integer $childType)
| ||
$parentType | integer | 父项目的类型 |
$childType | integer | 子项目类型 |
protected function checkItemChildType($parentType,$childType)
{
static $types=array('operation','task','role');
if($parentType < $childType)
throw new CException(Yii::t('yii','Cannot add an item of type "{child}" to an item of type "{parent}".',
array('{child}'=>$types[$childType], '{parent}'=>$types[$parentType])));
}
检查项目类型以确定一个子项目已经赋予给一个父项目。
createOperation()
方法
public CAuthItem createOperation(string $name, string $description='', string $bizRule=NULL, mixed $data=NULL)
| ||
$name | string | 项目名字 |
$description | string | 项目描述。 |
$bizRule | string | 关联到这个项目的业务逻辑 |
$data | mixed | 当执行业务规则的时候所传递的额外的数据。 |
{return} | CAuthItem | 授权项目。 |
public function createOperation($name,$description='',$bizRule=null,$data=null)
{
return $this->createAuthItem($name,CAuthItem::TYPE_OPERATION,$description,$bizRule,$data);
}
创建一个操作。 这个方法是IAuthManager::createAuthItem的快捷方式。
createRole()
方法
public CAuthItem createRole(string $name, string $description='', string $bizRule=NULL, mixed $data=NULL)
| ||
$name | string | 项目名字 |
$description | string | 项目描述。 |
$bizRule | string | 关联到这个项目的业务规则 |
$data | mixed | 执行业务规则的时候所传递的额外的数据。 |
{return} | CAuthItem | 授权项目 |
public function createRole($name,$description='',$bizRule=null,$data=null)
{
return $this->createAuthItem($name,CAuthItem::TYPE_ROLE,$description,$bizRule,$data);
}
创建一个角色。 这个方法是IAuthManager::createAuthItem的快捷方式。
createTask()
方法
public CAuthItem createTask(string $name, string $description='', string $bizRule=NULL, mixed $data=NULL)
| ||
$name | string | 项目名字 |
$description | string | 项目描述。 |
$bizRule | string | 关联到这个项目的业务规则。 |
$data | mixed | 执行这个业务规则时候所传递的额外的数据。 |
{return} | CAuthItem | 验证项目。 |
public function createTask($name,$description='',$bizRule=null,$data=null)
{
return $this->createAuthItem($name,CAuthItem::TYPE_TASK,$description,$bizRule,$data);
}
创建一个任务。 这个方法是IAuthManager::createAuthItem的快捷方式。
executeBizRule()
方法
public boolean executeBizRule(string $bizRule, array $params, mixed $data)
| ||
$bizRule | string | 要执行的业务规则。 |
$params | array | 传递给IAuthManager::checkAccess的参数 |
$data | mixed | 关联到授权项目或者任务的额外的数据。 |
{return} | boolean | 这个业务规则是否返回true。 如果业务规则为空,则返回true。 |
public function executeBizRule($bizRule,$params,$data)
{
return $bizRule==='' || $bizRule===null || ($this->showErrors ? eval($bizRule)!=0 : @eval($bizRule)!=0);
}
执行指定的业务规则。
getOperations()
方法
public array getOperations(mixed $userId=NULL)
| ||
$userId | mixed | 用户ID。如果不为null,那么只会返回赋予给这个 用户的操作。否则返回所有的操作。 |
{return} | array | operations (name=>CAuthItem) |
public function getOperations($userId=null)
{
return $this->getAuthItems(CAuthItem::TYPE_OPERATION,$userId);
}
返回操作。 这个方法是IAuthManager::getAuthItems的快捷方式
getRoles()
方法
public array getRoles(mixed $userId=NULL)
| ||
$userId | mixed | 用户ID。如果不为null,那么只返回赋予给这个用户 的角色。否则返回所有的角色。 |
{return} | array | 角色(name=>CAuthItem) |
public function getRoles($userId=null)
{
return $this->getAuthItems(CAuthItem::TYPE_ROLE,$userId);
}
返回角色。 这个方法是IAuthManager::getAuthItems的快捷方式。
getTasks()
方法
public array getTasks(mixed $userId=NULL)
| ||
$userId | mixed | 用户ID。如果不为null,只返回赋予给这个用户 任务。否则返回所有任务。 |
{return} | array | tasks (name=>CAuthItem) |
public function getTasks($userId=null)
{
return $this->getAuthItems(CAuthItem::TYPE_TASK,$userId);
}
返回任务。 这个方法是IAuthManager::getAuthItems的快捷方式