包 | 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 |
公共方法
方法 | 描述 | 定义在 |
---|---|---|
__call() | 如果类中没有调的方法名,则调用这个方法。 | CComponent |
__get() | 返回一个属性值、一个事件处理程序列表或一个行为名称。 | CComponent |
__isset() | 检查一个属性是否为null。 | CComponent |
__set() | 设置一个组件的属性值。 | CComponent |
__unset() | 设置一个组件的属性为null。 | CComponent |
addItemChild() | 添加一个授权项作为另一个授权项的子授权项。 | IAuthManager |
asa() | 返回这个名字的行为对象。 | CComponent |
assign() | 为用户分配一个授权项。 | IAuthManager |
attachBehavior() | 附加一个行为到组件。 | CComponent |
attachBehaviors() | 附加一个行为列表到组件。 | CComponent |
attachEventHandler() | 为事件附加一个事件处理程序。 | CComponent |
canGetProperty() | 确定属性是否可读。 | CComponent |
canSetProperty() | 确定属性是否可写。 | CComponent |
checkAccess() | 检查指定用户的执行权限。 | IAuthManager |
clearAll() | 移除所有授权数据。 | IAuthManager |
clearAuthAssignments() | 移除所有授权分配信息。 | IAuthManager |
createAuthItem() | 创建一个授权项。 | IAuthManager |
createOperation() | 创建一个操作。 | CAuthManager |
createRole() | 创建一个角色。 | CAuthManager |
createTask() | 创建一个任务。 | CAuthManager |
detachBehavior() | 从组件中分离一个行为。 | CComponent |
detachBehaviors() | 从组件中分离所有行为。 | CComponent |
detachEventHandler() | 分离一个存在的事件处理程序。 | CComponent |
disableBehavior() | 禁用一个附加行为。 | CComponent |
disableBehaviors() | 禁用组件附加的所有行为。 | CComponent |
enableBehavior() | 启用一个附加行为。 | CComponent |
enableBehaviors() | 启用组件附加的所有行为。 | CComponent |
evaLuateExpression() | 计算一个PHP表达式,或根据组件上下文执行回调。 | CComponent |
executeBizRule() | 执行指定的业务规则。 | CAuthManager |
getAuthAssignment() | 返回授权项分配信息。 | IAuthManager |
getAuthAssignments() | 返回指定用户的授权项分配信息。 | IAuthManager |
getAuthItem() | 返回指定名字的授权项 | IAuthManager |
getAuthItems() | 返回指定类型和用户的授权项。 | IAuthManager |
getEventHandlers() | 返回一个事件的附加处理程序列表。 | CComponent |
getIsInitialized() | 检查应用组件是否已经初始化。 | CApplicationComponent |
getItemChildren() | 返回指定授权项的子授权项。 | IAuthManager |
getOperations() | 返回操作。 | CAuthManager |
getRoles() | 返回角色。 | CAuthManager |
getTasks() | 返回任务。 | CAuthManager |
hasEvent() | 确定一个事件是否定义。 | CComponent |
hasEventHandler() | 检查事件是否有附加的处理程序。 | CComponent |
hasItemChild() | 返回一个值表示父授权项是否存在子授权项。 | IAuthManager |
hasProperty() | 确定属性是否被定义。 | CComponent |
init() | 初始化应用组件。 | CApplicationComponent |
isAssigned() | 返回一个值表示判断授权项是否分配给指定用户。 | IAuthManager |
raiseEvent() | 发起一个事件。 | CComponent |
removeAuthItem() | 移除指定授权项。 | IAuthManager |
removeItemChild() | 从父授权项中移除子授权项。 | IAuthManager |
revoke() | 撤销一个用户分配的授权项。 | IAuthManager |
save() | 保存授权数据到持久存储。 | IAuthManager |
saveAuthAssignment() | 保存修改的授权信息。 | IAuthManager |
saveAuthItem() | 保存授权项到持久存储。 | IAuthManager |
受保护方法
方法 | 描述 | 定义在 |
---|---|---|
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的快捷方式