Class yii\filters\AccessRule
继承 | yii\filters\AccessRule » yii\base\Component » yii\base\BaseObject |
---|---|
实现 | yii\base\Configurable |
可用版本自 | 2.0 |
源码 | https://github.com/yiichina/yii2/blob/api/framework/filters/AccessRule.php |
此类表示由 yii\filters\AccessControl 操作筛选器定义的访问规则。
公共属性
属性 | 类型 | 描述 | 被定义在 |
---|---|---|---|
$actions | array | 应用此规则的操作 IDs 的数组列表。比较区分大小写。 如果未设置或为空,则表示此规则适用于所有操作。 | yii\filters\AccessRule |
$allow | boolean | 无论这是 'allow' 规则还是 'deny' 规则。 | yii\filters\AccessRule |
$behaviors | yii\base\Behavior[] | List of behaviors attached to this component | yii\base\Component |
$controllers | array | 应用此规则的控制器 IDs 的列表。
比较使用 yii\base\Controller::$uniqueId,因此每个控制器 ID 都带有前缀
使用模块 ID (如果有的话)。对于应用程序中的 product 控制器,
您可以指定此属性类似于 ['product'] 如果该控制器位于 shop 模块,
则将是 ['shop/product'] 。
比较区分大小写。
如果未设置或为空,则表示此规则适用于所有控制器。
自版本 2. |
yii\filters\AccessRule |
$denyCallback | callable | 在此规则确定应拒绝对
当前操作的访问时将调用的回调。当此规则匹配且
$allow 设置为 false 时就会出现这种情况。
如果未设置,则行为将由 yii\filters\AccessControl,
或者使用 yii\filters\AccessControl::denyAccess()
或 yii\filters\AccessControl::$denyCallback,如果已设置。
回调的签名应如下所示:
` php
function ($rule, $action)
`
其中 $rule 是此规则,$action 是当前 action 对象。 |
yii\filters\AccessRule |
$ips | array | 此规则应用于的用户 IP 地址列表。IP 地址
的末尾可以包含通配符* ,以便与前缀相同的 IP 地址相匹配。
例如,'192. |
yii\filters\AccessRule |
$matchCallback | callable | 将被调用以确定是否应用规则的回调。
回调的签名应如下所示:
` php
function ($rule, $action)
`
其中 $rule 是此规则,$action 是当前 action 对象。
回调应返回一个布尔值,指示是否应用此规则。 |
yii\filters\AccessRule |
$permissions | array | 适用此规则的 RBAC (基于角色的访问控制)权限列表。 将调用 yii\web\User::can() 检查访问权限。 如果此属性未设置或为空,则表示无论权限如何此规则都适用。 | yii\filters\AccessRule |
$roleParams | array|Closure | 传递给 yii\web\User::can() 函数的参数
用于评估 $roles 中的用户权限。
如果这是一个数组,它将直接传递给 yii\web\User::can()。例如
从当前请求传递 ID,您可以使用以下内容:
` php
['postId' => Yii::$app->request->get('id')]
你还可以指定返回数组的闭包。只有在需要数组值的情况下,
才能使用该值来计算数组值, 例如当需要加载模型时
如下面的代码所示:
php
'rules' => [
[
'allow' => true,
'actions' => ['update'],
'roles' => ['updatePost'],
'roleParams' => function($rule) {
return ['post' => Post::findOne(Yii::$app->request->get('id'))];
},
],
],
`
对 yii\filters\AccessRule 实例的引用将作为第一个参数传递给闭包。 |
yii\filters\AccessRule |
$roles | array | 此规则适用的角色列表(需要正确配置的用户组件)。
识别两个特殊角色,并通过 yii\web\User::$isGuest 检查它们:
- ? : 匹配来宾用户(尚未通过身份验证)
- @ : 匹配经过身份验证的用户
如果使用 RBAC (Role-Based Access Control),你还可以指定角色名称。
在这种情况下,将调用 yii\web\User::can() 检查访问权限。
请注意最好检查权限。
如果此属性未设置或为空,则表示无论角色如何,此规则都适用。 |
yii\filters\AccessRule |
$verbs | array | 此规则适用的请求方法(例如 GET , POST )的列表。
如果未设置或为空,这意味着此规则适用于所有请求方法。 |
yii\filters\AccessRule |
公共方法
方法 | 描述 | 被定义在 |
---|---|---|
__call() | Calls the named method which is not a class method. | yii\base\Component |
__clone() | This method is called after the object is created by cloning an existing one. | yii\base\Component |
__construct() | Constructor. | yii\base\BaseObject |
__get() | Returns the value of a component property. | yii\base\Component |
__isset() | Checks if a property is set, i.e. defined and not null. | yii\base\Component |
__set() | Sets the value of a component property. | yii\base\Component |
__unset() | Sets a component property to be null. | yii\base\Component |
allows() | 检查是否允许 Web 用户执行指定的操作。 | yii\filters\AccessRule |
attachBehavior() | Attaches a behavior to this component. | yii\base\Component |
attachBehaviors() | Attaches a list of behaviors to the component. | yii\base\Component |
behaviors() | Returns a list of behaviors that this component should behave as. | yii\base\Component |
canGetProperty() | Returns a value indicating whether a property can be read. | yii\base\Component |
canSetProperty() | Returns a value indicating whether a property can be set. | yii\base\Component |
className() | Returns the fully qualified name of this class. | yii\base\BaseObject |
detachBehavior() | Detaches a behavior from the component. | yii\base\Component |
detachBehaviors() | Detaches all behaviors from the component. | yii\base\Component |
ensureBehaviors() | Makes sure that the behaviors declared in behaviors() are attached to this component. | yii\base\Component |
getBehavior() | Returns the named behavior object. | yii\base\Component |
getBehaviors() | Returns all behaviors attached to this component. | yii\base\Component |
hasEventHandlers() | Returns a value indicating whether there is any handler attached to the named event. | yii\base\Component |
hasMethod() | Returns a value indicating whether a method is defined. | yii\base\Component |
hasProperty() | Returns a value indicating whether a property is defined for this component. | yii\base\Component |
init() | Initializes the object. | yii\base\BaseObject |
off() | Detaches an existing event handler from this component. | yii\base\Component |
on() | Attaches an event handler to an event. | yii\base\Component |
trigger() | Triggers an event. | yii\base\Component |
受保护的方法
属性详情
应用此规则的操作 IDs 的数组列表。比较区分大小写。 如果未设置或为空,则表示此规则适用于所有操作。
无论这是 'allow' 规则还是 'deny' 规则。
应用此规则的控制器 IDs 的列表。
比较使用 yii\base\Controller::$uniqueId,因此每个控制器 ID 都带有前缀
使用模块 ID (如果有的话)。对于应用程序中的 product
控制器,
您可以指定此属性类似于 ['product']
如果该控制器位于 shop
模块,
则将是 ['shop/product']
。
比较区分大小写。
如果未设置或为空,则表示此规则适用于所有控制器。
自版本 2.0.12 起可以将控制器ID指定为通配符,例如 module/*
。
在此规则确定应拒绝对
当前操作的访问时将调用的回调。当此规则匹配且
$allow 设置为 false
时就会出现这种情况。
如果未设置,则行为将由 yii\filters\AccessControl, 或者使用 yii\filters\AccessControl::denyAccess() 或 yii\filters\AccessControl::$denyCallback,如果已设置。
回调的签名应如下所示:
function ($rule, $action)
其中 $rule
是此规则,$action
是当前 action 对象。
此规则应用于的用户 IP 地址列表。IP 地址
的末尾可以包含通配符*
,以便与前缀相同的 IP 地址相匹配。
例如,'192.168.*' 匹配网段 '192.168.' 中的所有 IP 地址。
如果未设置或为空,则表示此规则适用于所有 IP 地址。
将被调用以确定是否应用规则的回调。 回调的签名应如下所示:
function ($rule, $action)
其中 $rule
是此规则,$action
是当前 action 对象。
回调应返回一个布尔值,指示是否应用此规则。
传递给 yii\web\User::can() 函数的参数 用于评估 $roles 中的用户权限。
如果这是一个数组,它将直接传递给 yii\web\User::can()。例如 从当前请求传递 ID,您可以使用以下内容:
['postId' => Yii::$app->request->get('id')]
你还可以指定返回数组的闭包。只有在需要数组值的情况下, 才能使用该值来计算数组值, 例如当需要加载模型时 如下面的代码所示:
'rules' => [
[
'allow' => true,
'actions' => ['update'],
'roles' => ['updatePost'],
'roleParams' => function($rule) {
return ['post' => Post::findOne(Yii::$app->request->get('id'))];
},
],
],
对 yii\filters\AccessRule 实例的引用将作为第一个参数传递给闭包。
参见 $roles.
此规则适用的角色列表(需要正确配置的用户组件)。 识别两个特殊角色,并通过 yii\web\User::$isGuest 检查它们:
?
: 匹配来宾用户(尚未通过身份验证)@
: 匹配经过身份验证的用户
如果使用 RBAC (Role-Based Access Control),你还可以指定角色名称。 在这种情况下,将调用 yii\web\User::can() 检查访问权限。
请注意最好检查权限。
如果此属性未设置或为空,则表示无论角色如何,此规则都适用。
参见:
此规则适用的请求方法(例如 GET
, POST
)的列表。
如果未设置或为空,这意味着此规则适用于所有请求方法。
方法详情
检查是否允许 Web 用户执行指定的操作。
public boolean|null allows($action, $user, $request) | ||
$action | yii\base\Action | 要执行的操作 |
$user | yii\web\User|false | 在分离用户组件的情况下,用户对象或 |
$request | yii\web\Request | |
return | boolean|null | 如果允许用户,则为 |
---|
protected boolean matchAction($action) | ||
$action | yii\base\Action | 操作 |
return | boolean | 规则是否适用于操作 |
---|
protected boolean matchController($controller) | ||
$controller | yii\base\Controller | 控制器 |
return | boolean | 规则是否适用于控制器 |
---|
protected boolean matchCustom($action) | ||
$action | yii\base\Action | 要执行的操作 |
return | boolean | 是否应该应用该规则 |
---|
protected boolean matchIP($ip) | ||
$ip | string|null | IP 地址 |
return | boolean | 规则是否适用于 IP 地址 |
---|
protected boolean matchRole($user) | ||
$user | yii\web\User | 用户对象 |
return | boolean | 规则是否适用于角色 |
---|---|---|
throws | yii\base\InvalidConfigException | 如果用户组件已分离 |
protected boolean matchVerb($verb) | ||
$verb | string | 请求方法。 |
return | boolean | 规则是否适用于请求 |
---|