CAccessRule
| Пакет | system.web.auth |
|---|---|
| Наследование | класс CAccessRule » CComponent |
| С версии | 1.0 |
| Исходный код | framework/web/auth/CAccessControlFilter.php |
Свойства по умолчанию
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| actions | массив | список идентификаторов действий, к которым относится это правило. | CAccessRule |
| allow | булево | является ли это правилом «разрешить» или «запретить». | CAccessRule |
| controllers | массив | список идентификаторов контроллеров, к которым относится это правило. | CAccessRule |
| deniedCallback | смешанный | обратный вызов метода отказа, который будет вызван, когда доступ запрещен. | CAccessRule |
| expression | строка | PHP выражение, значение которого указывает, должно ли применяться это правило. | CAccessRule |
| ips | массив | Шаблоны IP-адресов. | CAccessRule |
| message | строка | сообщение об ошибке, которое будет отображено, когда авторизация запрещена данным правилом. | CAccessRule |
| roles | массив | список ролей, к которым относится это правило. | CAccessRule |
| users | массив | список имен пользователей, к которым относится это правило. | CAccessRule |
| verbs | массив | список типов запросов (например, GET, POST), к которым относится это правило. | CAccessRule |
Публичные методы
| Метод | Описание | Определено |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | CComponent |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в null. | CComponent |
| asa() | Возвращает объект поведения с заданным именем. | CComponent |
| attachBehavior() | Прикрепляет поведение к данному компоненту. | CComponent |
| attachBehaviors() | Прикрепляет список поведений к компоненту. | CComponent |
| attachEventHandler() | Прикрепляет обработчик событий к событию. | CComponent |
| canGetProperty() | Определяет, можно ли считать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| detachBehavior() | Открепляет поведение от компонента. | CComponent |
| detachBehaviors() | Открепляет все поведения от компонента. | CComponent |
| detachEventHandler() | Открепляет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает присоединенное поведение. | CComponent |
| disableBehaviors() | Отключает все присоединенные к этому компоненту поведения. | CComponent |
| enableBehavior() | Включает присоединенное поведение. | CComponent |
| enableBehaviors() | Включает все присоединенные к этому компоненту поведения. | CComponent |
| evaluateExpression() | Вычисляет PHP выражение или обратный вызов в контексте этого компонента. | CComponent |
| getEventHandlers() | Возвращает список присоединенных обработчиков событий для события. | CComponent |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли присоединенные обработчики для данного события. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| isUserAllowed() | Проверяет, разрешен ли веб-пользователю выполнить указанное действие. | CAccessRule |
| raiseEvent() | Вызывает событие. | CComponent |
Защищенные методы
| Метод | Описание | Определено |
|---|---|---|
| isActionMatched() | CAccessRule | |
| isControllerMatched() | CAccessRule | |
| isExpressionMatched() | CAccessRule | |
| isIpMatched() | CAccessRule | |
| isRoleMatched() | CAccessRule | |
| isUserMatched() | CAccessRule | |
| isVerbMatched() | CAccessRule |
Подробное описание свойств
actions свойство
public array $actions;
список идентификаторов действий, к которым относится это правило. Сравнение нечувствительно к регистру. Если действия не указаны, правило применяется ко всем действиям.
allow свойство
public boolean $allow;
является ли это правилом «разрешить» или «запретить».
controllers свойство
public array $controllers;
список идентификаторов контроллеров, к которым относится это правило. Сравнение нечувствительно к регистру.
deniedCallback свойство (доступно с версии v1.1.11)
public mixed $deniedCallback;
обратный вызов метода отказа, который будет вызван, когда доступ запрещен. Он заменяет поведение, отображающее сообщение об ошибке. Может быть допустимым PHP обратным вызовом, включая имя метода класса (array(ClassName/Object, MethodName)), или анонимной функцией (PHP 5.3.0+). Для получения дополнительной информации об различных вариантах, см.
expression свойство
public string $expression;
PHP выражение, значение которого указывает, должно ли применяться это правило. В этом выражении можно использовать $user , которое относится к Yii::app()->user. Выражение также может быть допустимым PHP обратным вызовом, включая имя метода класса (array(ClassName/Object, MethodName)) или анонимную функцию (PHP 5.3.0+). Подпись функции/метода должна быть следующей:
function foo($user, $rule) { ... }
где $user — текущий объект пользователя приложения, а $rule — это правило доступа. PHP выражение будет вычислено с использованием evaluateExpression.
PHP выражение может быть любым PHP кодом, имеющим значение. Чтобы узнать больше о том, что такое выражение, пожалуйста, обратитесь к справке по PHP.
ips свойство
public array $ips;
Шаблоны IP-адресов.
свойство message (доступно начиная с v1.1.1)
public string $message;
сообщение об ошибке, которое будет отображаться, когда авторизация запрещена этой политикой. Если не задано, будет отображено сообщение об ошибке по умолчанию.
свойство roles
public array $roles;
список ролей, к которым применяется данное правило. Для каждой роли вызывается метод CWebUser::checkAccess текущего пользователя. Если один из вызовов вернёт true, правило будет применено. Обратите внимание, что роли следует использовать в основном в правилах «разрешить», потому что роль, по определению, представляет собой набор разрешений.
См. также
свойство users
public array $users;
список имён пользователей, к которым применяется это правило. Сравнение регистронезависимое. Если имена пользователей не указаны, правило применяется ко всем пользователям.
свойство verbs
public array $verbs;
список типов запросов (например, GET, POST), к которым применяется данное правило.
Подробное описание методов
isActionMatched() метод
protected boolean isActionMatched(CAction $action) | ||
| $action | CAction | действие |
| {return} | boolean | применимо ли правило к действию |
protected function isActionMatched($action)
{
return empty($this->actions) || in_array(strtolower($action->getId()),$this->actions);
}
isControllerMatched() метод
protected boolean isControllerMatched(CController $controller) | ||
| $controller | CController | контроллер |
| {return} | boolean | применимо ли правило к контроллеру |
protected function isControllerMatched($controller)
{
return empty($this->controllers) || in_array(strtolower($controller->getUniqueId()),$this->controllers);
}
isExpressionMatched() метод
protected boolean isExpressionMatched(IWebUser $user) | ||
| $user | IWebUser | пользователь |
| {return} | boolean | значение выражения. True, если выражение не задано. |
protected function isExpressionMatched($user)
{
if($this->expression===null)
return true;
else
return $this->evaluateExpression($this->expression, array('user'=>$user));
}
isIpMatched() метод
protected boolean isIpMatched(string $ip) | ||
| $ip | string | IP-адрес |
| {return} | boolean | применимо ли правило к IP-адресу |
protected function isIpMatched($ip)
{
if(empty($this->ips))
return true;
foreach($this->ips as $rule)
{
if($rule==='*' || $rule===$ip || (($pos=strpos($rule,'*'))!==false && !strncmp($ip,$rule,$pos)))
return true;
}
return false;
}
isRoleMatched() метод
protected boolean isRoleMatched(IWebUser $user) | ||
| $user | IWebUser | объект пользователя |
| {return} | boolean | применимо ли правило к роли |
protected function isRoleMatched($user)
{
if(empty($this->roles))
return true;
foreach($this->roles as $key=>$role)
{
if(is_numeric($key))
{
if($user->checkAccess($role))
return true;
}
else
{
if($user->checkAccess($key,$role))
return true;
}
}
return false;
}
isUserAllowed() метод
public integer isUserAllowed(CWebUser $user, CController $controller, CAction $action, string $ip, string $verb) | ||
| $user | CWebUser | объект пользователя |
| $controller | CController | контроллер, который выполняется в данный момент |
| $action | CAction | действие, которое должно быть выполнено |
| $ip | string | IP-адрес запроса |
| $verb | string | метод запроса (GET, POST и т. д.) |
| {return} | integer | 1, если пользователю разрешено, -1, если пользователю запрещено, 0, если правило не применяется к пользователю |
public function isUserAllowed($user,$controller,$action,$ip,$verb)
{
if($this->isActionMatched($action)
&& $this->isUserMatched($user)
&& $this->isRoleMatched($user)
&& $this->isIpMatched($ip)
&& $this->isVerbMatched($verb)
&& $this->isControllerMatched($controller)
&& $this->isExpressionMatched($user))
return $this->allow ? 1 : -1;
else
return 0;
}
Проверяет, разрешено ли веб-пользователю выполнить указанное действие.
isUserMatched() метод
protected boolean isUserMatched(IWebUser $user) | ||
| $user | IWebUser | пользователь |
| {return} | boolean | применимо ли правило к пользователю |
protected function isUserMatched($user)
{
if(empty($this->users))
return true;
foreach($this->users as $u)
{
if($u==='*')
return true;
elseif($u==='?' && $user->getIsGuest())
return true;
elseif($u==='@' && !$user->getIsGuest())
return true;
elseif(!strcasecmp($u,$user->getName()))
return true;
}
return false;
}
isVerbMatched() метод
protected boolean isVerbMatched(string $verb) | ||
| $verb | string | метод запроса |
| {return} | boolean | применимо ли правило к запросу |
protected function isVerbMatched($verb)
{
return empty($this->verbs) || in_array(strtolower($verb),$this->verbs);
}
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CAccessRule