CAuthManager
| Пакет | system.web.auth |
|---|---|
| Наследование | абстрактный класс CAuthManager » CApplicationComponent » CComponent |
| Реализует | IApplicationComponent, IAuthManager |
| Подклассы | CDbAuthManager, CPhpAuthManager |
| С версии | 1.0 |
| Исходный код | framework/web/auth/CAuthManager.php |
CAuthManager расширяет CApplicationComponent и реализует некоторые методы, которые являются общими для классов менеджеров авторизации.
CAuthManager вместе со своими конкретными дочерними классами реализует контроль доступа на основе ролей (RBAC).
Основная идея заключается в том, что разрешения организованы в иерархии элементов авторизации. Элементы на более высоком уровне наследуют разрешения, представленные элементами на более низком уровне. А роли — это просто элементы авторизации верхнего уровня, которые могут быть назначены отдельным пользователям. Пользователь считается имеющим разрешение на выполнение чего-либо, если соответствующий элемент авторизации унаследован одной из его ролей.
Использование менеджера авторизации состоит из двух аспектов. Во-первых, необходимо установить иерархию авторизации и назначение. CAuthManager и его дочерние классы предоставляют API для выполнения этой задачи. Разработчикам может потребоваться разработать какой-либо интерфейс для конечных пользователей для более интуитивного использования. Во-вторых, разработчики вызывают IAuthManager::checkAccess в соответствующих местах кода приложения, чтобы проверить, имеет ли текущий пользователь необходимое разрешение для операции.
Свойства Public
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| authItems | массив | Возвращает элементы авторизации указанного типа и пользователя. | IAuthManager |
| behaviors | массив | поведения, которые должны быть присоединены к этому компоненту. | CApplicationComponent |
| defaultRoles | массив | список имен ролей, которые неявно назначаются всем пользователям. | CAuthManager |
| isInitialized | boolean | Проверяет, был ли инициализирован этот компонент приложения. | CApplicationComponent |
| operations | массив | Возвращает операции. | CAuthManager |
| roles | массив | Возвращает роли. | CAuthManager |
| showErrors | boolean | Включить вывод ошибок для bizRules. | CAuthManager |
| tasks | массив | Возвращает задачи. | CAuthManager |
Общедоступные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | CComponent |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства нулевым. | 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, эти роли будут проверены в первую очередь. По соображениям производительности следует минимизировать количество таких ролей. Типичное использование таких ролей заключается в определении роли «авторизован» и связывании её с правилом бизнес-логики, которое проверяет, авторизован ли текущий пользователь. Затем объявите «авторизован» в этом свойстве, чтобы его можно было применить к каждому авторизованному пользователю.
операции свойство только для чтения
public array getOperations(mixed $userId=NULL)
Возвращает операции. Это метод-костыль для IAuthManager::getAuthItems.
роли свойство только для чтения
public array getRoles(mixed $userId=NULL)
Возвращает роли. Это метод-костыль для IAuthManager::getAuthItems.
showErrors свойство (доступно начиная с v1.1.3)
public boolean $showErrors;
Включить отчёт об ошибках для правил бизнес-логики.
задачи свойство только для чтения
public array getTasks(mixed $userId=NULL)
Возвращает задачи. Это метод-костыль для IAuthManager::getAuthItems.
Подробное описание методов
checkItemChildType() метод
protected void checkItemChildType(integer $parentType, integer $childType) | ||
| $parentType | целое | тип родительского элемента |
| $childType | целое | тип дочернего элемента |
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 | строка | имя элемента |
| $description | строка | описание элемента. |
| $bizRule | строка | правило бизнес-логики, связанное с этим элементом |
| $data | смешанный тип | дополнительные данные, которые будут переданы при оценке правила бизнес-логики |
| {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 | строка | имя элемента |
| $description | строка | описание элемента. |
| $bizRule | строка | правило бизнес-логики, связанное с этим элементом |
| $data | смешанный тип | дополнительные данные, которые будут переданы при оценке правила бизнес-логики |
| {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 | строка | имя элемента |
| $description | строка | описание элемента. |
| $bizRule | строка | правило бизнес-логики, связанное с этим элементом |
| $data | смешанный тип | дополнительные данные, которые будут переданы при оценке правила бизнес-логики |
| {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 | строка | правило бизнес-логики, которое необходимо выполнить. |
| $params | массив | параметры, передаваемые в IAuthManager::checkAccess. |
| $data | смешанный тип | дополнительные данные, связанные с элементом авторизации или назначением. |
| {return} | булево | true, если правило бизнес-логики возвращает true. Если правило бизнес-логики пустое, оно всё равно вернёт true. |
public function executeBizRule($bizRule,$params,$data)
{
if($bizRule==='' || $bizRule===null)
return true;
if ($this->showErrors)
return eval($bizRule)!=0;
else
{
try
{
return @eval($bizRule)!=0;
}
catch (ParseError $e)
{
return false;
}
}
}
Выполняет указанное правило бизнес-логики.
getOperations() метод
public array getOperations(mixed $userId=NULL) | ||
| $userId | смешанный тип | ID пользователя. Если не null, будут возвращены только операции, напрямую назначенные пользователю. В противном случае будут возвращены все операции. |
| {return} | массив | операции (имя=>CAuthItem) |
public function getOperations($userId=null)
{
return $this->getAuthItems(CAuthItem::TYPE_OPERATION,$userId);
}
Возвращает операции. Это метод-костыль для IAuthManager::getAuthItems.
getRoles() метод
public array getRoles(mixed $userId=NULL) | ||
| $userId | смешанный тип | ID пользователя. Если не null, будут возвращены только роли, напрямую назначенные пользователю. В противном случае будут возвращены все роли. |
| {return} | массив | роли (имя=>CAuthItem) |
public function getRoles($userId=null)
{
return $this->getAuthItems(CAuthItem::TYPE_ROLE,$userId);
}
Возвращает роли. Это метод-костыль для IAuthManager::getAuthItems.
getTasks() метод
public array getTasks(mixed $userId=NULL) | ||
| $userId | смешанный тип | ID пользователя. Если не null, будут возвращены только задачи, напрямую назначенные пользователю. В противном случае будут возвращены все задачи. |
| {return} | массив | задачи (имя=>CAuthItem) |
public function getTasks($userId=null)
{
return $this->getAuthItems(CAuthItem::TYPE_TASK,$userId);
}
Возвращает задачи. Это метод-костыль для IAuthManager::getAuthItems.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CAuthManager