Spec-Zone.ru › Yii 1.1

CAccessRule

Пакет system.web.auth
Наследование класс CAccessRule » CComponent
С версии 1.0
Исходный код framework/web/auth/CAccessControlFilter.php
CAccessRule представляет правило доступа, которое управляется CAccessControlFilter.

Свойства по умолчанию

Свойство Тип Описание Определено
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, правило будет применено. Обратите внимание, что роли следует использовать в основном в правилах «разрешить», потому что роль, по определению, представляет собой набор разрешений.

См. также

  • CAuthManager

свойство users

public array $users;

список имён пользователей, к которым применяется это правило. Сравнение регистронезависимое. Если имена пользователей не указаны, правило применяется ко всем пользователям.

свойство verbs

public array $verbs;

список типов запросов (например, GET, POST), к которым применяется данное правило.

Подробное описание методов

isActionMatched() метод

protected boolean isActionMatched(CAction $action)
$action CAction действие
{return} boolean применимо ли правило к действию
Исходный код: framework/web/auth/CAccessControlFilter.php#299 (показать)
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 применимо ли правило к контроллеру
Исходный код: framework/web/auth/CAccessControlFilter.php#308 (показать)
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, если выражение не задано.
Исходный код: framework/web/auth/CAccessControlFilter.php#388 (показать)
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-адресу
Исходный код: framework/web/auth/CAccessControlFilter.php#363 (показать)
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 применимо ли правило к роли
Исходный код: framework/web/auth/CAccessControlFilter.php#339 (показать)
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, если правило не применяется к пользователю
Исходный код: framework/web/auth/CAccessControlFilter.php#281 (показать)
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 применимо ли правило к пользователю
Исходный код: framework/web/auth/CAccessControlFilter.php#317 (показать)
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 применимо ли правило к запросу
Исходный код: framework/web/auth/CAccessControlFilter.php#379 (показать)
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API