Class yii\filters\AccessControl

继承yii\filters\AccessControl » yii\base\ActionFilter » yii\base\Behavior » yii\base\BaseObject
实现yii\base\Configurable
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/filters/AccessControl.php

AccessControl 基于一组规则(rules)提供简单的访问控制.

AccessControl 是一个动作过滤器. 它将检查其 $rules 以查找与当前上下文变量(如用户 IP 地址, 用户角色)匹配的第一条规则. 匹配规则将决定是允许还是拒绝对请求的控制器动作的访问. 如果没有规则匹配, 则访问将被拒绝.

要使用 AccessControl, 请在控制器类的behaviors()方法中对其进行声明. 例如, 以下声明将允许经过身份验证的用户访问"create"和"update"动作, 并拒绝所有其他用户访问这两个动作.

public function behaviors()
{
    return [
        'access' => [
            'class' => \yii\filters\AccessControl::className(),
            'only' => ['create', 'update'],
            'rules' => [
                // 拒绝所有 POST 请求
                [
                    'allow' => false,
                    'verbs' => ['POST']
                ],
                // 允许经过身份验证的用户
                [
                    'allow' => true,
                    'roles' => ['@'],
                ],
                // 拒绝其他所有用户
            ],
        ],
    ];
}

公共属性

隐藏继承的属性

属性类型描述定义在
$denyCallback callable 如果应拒绝当前用户的访问, 将将调用该回调函数. yii\filters\AccessControl
$except array 此过滤器不适用的动作ID列表, 列表中的动作将不被过滤. yii\base\ActionFilter
$only array 此过滤器应适用的动作ID列表, 仅列表中的动作被过滤. yii\base\ActionFilter
$owner yii\base\Component|null 该行为的所有者. yii\base\Behavior
$ruleConfig array 访问规则的默认配置. yii\filters\AccessControl
$rules array 用于创建规则对象的访问规则对象或配置数组的列表. yii\filters\AccessControl
$user yii\web\User|array|string|false 代表身份验证状态或应用程序用户(user)组件 ID 的用户对象. yii\filters\AccessControl

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的已命名方法. yii\base\BaseObject
__construct() 构造函数. yii\base\BaseObject
__get() 返回对象属性的值. yii\base\BaseObject
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\BaseObject
__set() 设置对象属性的值. yii\base\BaseObject
__unset() 将对象属性设置为null. yii\base\BaseObject
afterAction() 执行动作后立即调用此方法. yii\base\ActionFilter
afterFilter() yii\base\ActionFilter
attach() 将行为对象附加到组件. yii\base\ActionFilter
beforeAction() 在执行动作之前(在所有可能的过滤器之后)立即调用该方法. yii\filters\AccessControl
beforeFilter() yii\base\ActionFilter
canGetProperty() 返回一个值, 指示属性是否可读. yii\base\BaseObject
canSetProperty() 返回一个值, 指示属性是否可写. yii\base\BaseObject
className() 返回此类的完全限定名称. yii\base\BaseObject
detach() 从组件中分离行为对象. yii\base\ActionFilter
events() 声明 所有者 事件的事件处理程序. yii\base\Behavior
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\BaseObject
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\BaseObject
init() 通过实例化配置中的规则对象来初始化 $rules 数组. yii\filters\AccessControl

受保护的方法

隐藏继承的方法

方法描述定义在
denyAccess() 拒绝用户的访问. yii\filters\AccessControl
getActionId() 通过将 yii\base\Action::$uniqueId 转换为相对于模块的ID来返回动作ID. yii\base\ActionFilter
isActive() 返回一个值, 指示过滤器对于给定动作是否处于活动状态. yii\base\ActionFilter

属性详情

$denyCallback public 属性

如果应拒绝当前用户的访问, 将将调用该回调函数. 当没有规则匹配时, 或者 $allow 被设置为false的规则匹配时, 就是这种情况. 如果未设置, 将调用 denyAccess().

回调的签名应如下所示:

function ($rule, $action)

其中$rule是拒绝用户的规则, $action是当前的 动作 对象. 如果由于没有匹配的规则而拒绝访问, 则$rule可能为null.

public callable $denyCallback null
$ruleConfig public 属性

访问规则的默认配置. 当配置规则的相同属性时, 通过 $rules 指定的单独规则配置将优先.

public array $ruleConfig = ['class' => 'yii\filters\AccessRule']
$rules public 属性

用于创建规则对象的访问规则对象或配置数组的列表. 如果规则是通过配置数组指定的, 则在用于创建规则对象之, 它将首先与 $ruleConfig 合并.

参见 $ruleConfig.

public array $rules = []
$user public 属性

代表身份验证状态或应用程序用户(user)组件 ID 的用户对象.

从版本 2.0.2 开始, 这也可以是用于创建对象的配置数组.

从版本 2.0.12 开始, 你可以将其设置为false, 以明确关闭该组件对过滤器的支持.

方法详情

beforeAction() public 方法

在执行动作之前(在所有可能的过滤器之后)立即调用该方法.

你可以重写此方法, 以便为该动作做最后的准备.

public boolean beforeAction ( $action )
$action yii\base\Action

要执行的动作.

return boolean

该动作是否应该继续执行.

denyAccess() protected 方法

拒绝用户的访问.

如果用户是访客, 则默认实现将把用户重定向到登录页面; 如果用户已经登录, 将抛出 403 HTTP 异常.

protected void denyAccess ( $user )
$user yii\web\User|false

当前用户, 如果用户组件分离, 则为布尔值false.

throws yii\web\ForbiddenHttpException

如果用户已经登录, 或者用户组件分离.

init() public 方法

通过实例化配置中的规则对象来初始化 $rules 数组.

public void init ( )