Class yiifiltersAccessControl
继承 | yiifiltersAccessControl ? yiibaseActionFilter ? yiibaseBehavior ? yiibaseBaseObject |
---|---|
实现 | yiibaseConfigurable |
可用版本自 | 2.0 |
源码 | https://github.com/yiichina/yii2/blob/api/framework/filters/AccessControl.php |
AccessControl 基于一组规则提供简单的访问控制。
AccessControl 是一个操作筛选器。它将检查其 $rules 查找 匹配当前上下文变量(例如用户IIp 地址、用户角色)的第一条规则。 匹配规则将指定是允许还是拒绝访问所请求的控制器 操作。如果没有匹配的规则,访问将被拒绝。
要使用 AccessControl,请在控制器类的 behaviors()
方法中声明它。 例如,以下声明将允许经过身份验证的用户访问 "create" 和 "update" 操作并拒绝所有其他用户访问这两个操作。
public functionbehaviors(){ return [ ‘access‘ => [ ‘class‘ => yiifiltersAccessControl::className(),‘only‘ => [‘create‘,‘update‘],‘rules‘ => [ // deny all POST requests [ ‘allow‘ => false,‘verbs‘ => [‘POST‘] ],// allow authenticated users [ ‘allow‘ => true,‘roles‘ => [‘@‘],],// everything else is denied ],]; }
公共属性
隐藏继承的属性
属性 | 类型 | 描述 | 被定义在 |
---|---|---|---|
$denyCallback | callable | 在拒绝当前用户访问时将调用的回调。 如果没有匹配的规则或者是符合以下条件的规则,则会出现这种情况 $allow 设置成 如果未设置,denyAccess() 将会被调用。 回调的签名应如下所示:
|
yiifiltersAccessControl |
$except | array | 列出所有不需要启用过滤规则的action ID 如:[‘index1‘,‘index2‘] 表示:这两个方法不进行规则验证,所有用户,所有状态都能访问 |
yiibaseActionFilter |
$only | array | 列出所有需要启用过滤规则的action ID。 如:[‘index1‘,‘index2‘,‘index3‘] 表示: 如果用户访问index方法,那么不进行身份验证,所有用户,所有状态都能访问 |
yiibaseActionFilter |
$owner | yiibaseComponent|null | The owner of this behavior | yiibaseBehavior |
$ruleConfig | array | 访问规则的默认配置。单个规则配置 在配置规则的相同属性时 via $rules 将优先。 | yiifiltersAccessControl |
$rules | array | 访问规则对象的列表或用于创建规则对象的配置数组。 如果规则是通过配置数组指定的, 它将首先与 $ruleConfig 合并 在用于创建规则对象之前。 |
yiifiltersAccessControl |
$user | yiiwebUser|array|string|false | 表示用户应用程序组件的身份验证状态或ID的用户对象。 从版本 2. | yiifiltersAccessControl |
公共方法
隐藏继承的方法
方法 | 描述 | 被定义在 |
---|---|---|
__call() | Calls the named method which is not a class method. | yiibaseBaseObject |
__construct() | Constructor. | yiibaseBaseObject |
__get() | Returns the value of an object property. | yiibaseBaseObject |
__isset() | Checks if a property is set,i.e. defined and not null. | yiibaseBaseObject |
__set() | Sets value of an object property. | yiibaseBaseObject |
__unset() | Sets an object property to null. | yiibaseBaseObject |
afterAction() | 执行动作后立即调用此方法。 您可以覆盖此方法以对操作执行一些后处理。 | yiibaseActionFilter |
afterFilter() | ? | yiibaseActionFilter |
attach() | Attaches the behavior object to the component. | yiibaseBehavior |
beforeAction() | 此方法是在执行操作之前(在所有可能的筛选器之后。)调用 您可以重写此方法以便为操作做最后一刻的准备。 | yiifiltersAccessControl |
beforeFilter() | ? | yiibaseActionFilter |
canGetProperty() | Returns a value indicating whether a property can be read. | yiibaseBaseObject |
canSetProperty() | Returns a value indicating whether a property can be set. | yiibaseBaseObject |
className() | Returns the fully qualified name of this class. | yiibaseBaseObject |
detach() | Detaches the behavior object from the component. | yiibaseBehavior |
events() | Declares event handlers for the $owner‘s events. | yiibaseBehavior |
hasMethod() | Returns a value indicating whether a method is defined. | yiibaseBaseObject |
hasProperty() | Returns a value indicating whether a property is defined. | yiibaseBaseObject |
init() | 通过从配置实例化规则对象来初始化 $rules 数组。 | yiifiltersAccessControl |
受保护的方法
隐藏继承的方法
方法 | 描述 | 被定义在 |
---|---|---|
denyAccess() | 拒绝用户访问。 如果用户是访客默认实现会将用户重定向到登录页面; 如果用户已登录,则将引发 403 HTTP 异常。 | yiifiltersAccessControl |
getActionId() | 通过将 yiibaseAction::$uniqueId 转换为相对于模块的 ID 来返回动作 ID。 | yiibaseActionFilter |
isActive() | 返回一个值,该值指示过滤器对于给定操作是否处于活动状态。 | yiibaseActionFilter |
属性详情
在拒绝当前用户访问时将调用的回调。 如果没有匹配的规则或者是符合以下条件的规则,则会出现这种情况 $allow 设置成 false
匹配。 如果未设置,denyAccess() 将会被调用。
回调的签名应如下所示:
function($rule,$action)
其中 $rule
是拒绝用户的规则,$action
是当前 action 对象。 如果访问被拒绝则 $rule
可以为 null
因为所有规则都不匹配。
访问规则的默认配置。单个规则配置 在配置规则的相同属性时 via $rules 将优先。
访问规则对象的列表或用于创建规则对象的配置数组。 如果规则是通过配置数组指定的,它将首先与 $ruleConfig 合并 在用于创建规则对象之前。
参见 [[规则配置]].
表示用户应用程序组件的身份验证状态或ID的用户对象。 从版本 2.0.2 开始,也可以是用于创建对象的配置数组。 从版本 2.0.12 开始,你可以将其设置为 “false”,以显式地为筛选器关闭此组件支持。
方法详情
此方法是在执行操作之前(在所有可能的筛选器之后。)调用 您可以重写此方法以便为操作做最后一刻的准备。
public boolean beforeAction($action) | ||
$action | yiibaseAction | 要执行的操作。 |
return | boolean | 是否应继续执行该操作。 |
---|
拒绝用户访问。 如果用户是访客默认实现会将用户重定向到登录页面; 如果用户已登录,则将引发 403 HTTP 异常。
protected void denyAccess($user) | ||
$user | yiiwebUser|false | 在分离用户组件的情况下当前用户或布尔值 |
throws | yiiwebForbiddenHttpException | 如果用户已经登录或者已分离用户组件。 |
---|
通过从配置实例化规则对象来初始化 $rules 数组。
public void init() |