Class yii\rbac\PhpManager
PhpManager 表示一个授权管理器, 它根据 PHP 脚本文件存储授权信息。
授权数据将保存到 $itemFile,$assignmentFile 和 $ruleFile 指定的三个文件中并从中加载。
PhpManager 主要适用于不太大的授权数据 (例如,个人博客系统的授权数据)。 对于更复杂的授权数据,应使用 yii\rbac\DbManager。
请注意,PhpManager 与 facebooks HHVM 不兼容, 因为它依赖于编写 php 文件并在之后包含它们,而 HHVM 不支持它们。
有关 PhpManager 的更多详细信息和用法信息,请参阅 授权指南。
公共属性
| 属性 | 类型 | 描述 | 被定义在 |
|---|---|---|---|
| $assignmentFile | string | 包含授权分配的 PHP 脚本的路径。 这可以是文件路径,也可以是文件的 路径别名。 如果需要在线更改授权,请确保 Web 服务器进程可写入此文件。 | yii\rbac\PhpManager |
| $behaviors | yii\base\Behavior[] | List of behaviors attached to this component | yii\base\Component |
| $defaultRoleInstances | yii\rbac\Role[] | 默认角色。该数组由角色名称索引 | yii\rbac\BaseManager |
| $itemFile | string | 包含授权项的 PHP 脚本的路径。 这可以是文件路径,也可以是文件的 路径别名。 如果需要在线更改授权,请确保 Web 服务器进程可写入此文件。 | yii\rbac\PhpManager |
| $permissions | yii\rbac\Permission[] | 系统中的所有权限。该数组由权限名称索引。 | yii\rbac\BaseManager |
| $roles | yii\rbac\Role[] | 系统中的所有角色。该数组由角色名称索引。 | yii\rbac\BaseManager |
| $ruleFile | string | 包含授权规则的 PHP 脚本的路径。 这可以是文件路径,也可以是文件的 路径别名。 如果需要在线更改授权,请确保 Web 服务器进程可写入此文件。 | yii\rbac\PhpManager |
受保护的属性
| 属性 | 类型 | 描述 | 被定义在 |
|---|---|---|---|
| $assignments | array | yii\rbac\PhpManager | |
| $children | array | yii\rbac\PhpManager | |
| $defaultRoles | array | 在不调用 assign() 的情况下自动分配给每个用户的角色名称列表。 请注意,无论身份验证的状态如何,这些角色都将应用于用户。 | yii\rbac\BaseManager |
| $items | yii\rbac\Item[] | yii\rbac\PhpManager | |
| $rules | yii\rbac\Rule[] | yii\rbac\PhpManager |
公共方法
| 方法 | 描述 | 被定义在 |
|---|---|---|
| __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 |
| add() | 向 RBAC 系统添加角色,权限或规则。 | yii\rbac\BaseManager |
| addChild() | 将项目添加为另一项目的子项。 | yii\rbac\PhpManager |
| assign() | 为用户分配角色。 | yii\rbac\PhpManager |
| 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 |
| canAddChild() | 检查将孩子加入父项的可能性。 | yii\rbac\PhpManager |
| 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 |
| checkAccess() | yii\rbac\PhpManager | |
| className() | Returns the fully qualified name of this class. | yii\base\BaseObject |
| createPermission() | 创建一个新的 Permission 对象。 请注意,新创建的权限尚未添加到 RBAC 系统。 你必须填写所需数据并调用 add() 将其添加到系统中。 | yii\rbac\BaseManager |
| createRole() | 创建一个新的 Role 对象。 请注意,新创建的角色尚未添加到 RBAC 系统。 你必须填写所需数据并调用 add() 将其添加到系统中。 | yii\rbac\BaseManager |
| 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 |
| getAssignment() | 返回有关角色和用户的分配信息。 | yii\rbac\PhpManager |
| getAssignments() | 返回指定用户的所有角色分配信息。 | yii\rbac\PhpManager |
| getBehavior() | Returns the named behavior object. | yii\base\Component |
| getBehaviors() | Returns all behaviors attached to this component. | yii\base\Component |
| getChildRoles() | 返回指定角色的子角色。深度不受限制。 | yii\rbac\PhpManager |
| getChildren() | 返回子项权限和角色。 | yii\rbac\PhpManager |
| getDefaultRoleInstances() | 将 defaultRoles 作为 Role 对象的数组返回。 | yii\rbac\BaseManager |
| getDefaultRoles() | 获取默认角色 | yii\rbac\BaseManager |
| getItem() | 返回指定的 auth 项。 | yii\rbac\PhpManager |
| getItems() | 返回指定类型的项。 | yii\rbac\PhpManager |
| getPermission() | 返回指定的权限。 | yii\rbac\BaseManager |
| getPermissions() | 返回系统中的所有权限。 | yii\rbac\BaseManager |
| getPermissionsByRole() | 返回指定角色所代表的所有权限。 | yii\rbac\PhpManager |
| getPermissionsByUser() | 返回用户拥有的所有权限。 | yii\rbac\PhpManager |
| getRole() | 返回指定的角色。 | yii\rbac\BaseManager |
| getRoles() | 返回系统中的所有角色。 | yii\rbac\BaseManager |
| getRolesByUser() | {@inheritdoc} 此方法返回的角色包括通过 $defaultRoles 分配的角色。 | yii\rbac\PhpManager |
| getRule() | 返回指定名称的规则。 | yii\rbac\PhpManager |
| getRules() | 返回系统中可用的所有规则。 | yii\rbac\PhpManager |
| getUserIdsByRole() | 返回分配给指定角色的所有用户 ID。 | yii\rbac\PhpManager |
| hasChild() | 返回一个值,该值指示父项的子项是否已存在。 | yii\rbac\PhpManager |
| 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() | 初始化应用程序组件。 此方法通过从 PHP 脚本加载授权数据来覆盖父实现。 | yii\rbac\PhpManager |
| off() | Detaches an existing event handler from this component. | yii\base\Component |
| on() | Attaches an event handler to an event. | yii\base\Component |
| remove() | 从 RBAC 系统中删除角色,权限或规则。 | yii\rbac\BaseManager |
| removeAll() | 删除所有授权数据,包括角色,权限,规则和分配。 | yii\rbac\PhpManager |
| removeAllAssignments() | 删除所有角色分配。 | yii\rbac\PhpManager |
| removeAllPermissions() | 删除所有权限。 所有父子关系将相应调整。 | yii\rbac\PhpManager |
| removeAllRoles() | 删除所有角色。 所有父子关系将相应调整。 | yii\rbac\PhpManager |
| removeAllRules() | 删除所有规则。 所有具有规则的角色和权限都将相应调整。 | yii\rbac\PhpManager |
| removeChild() | 从父项中移除一个子项。 注意,子项目不会被删除。仅删除父子关系。 | yii\rbac\PhpManager |
| removeChildren() | 从父项那里删除所有子项。 注意,子项目不会被删除。仅删除父子关系。 | yii\rbac\PhpManager |
| removeItem() | 从 RBAC 系统中删除 auth 项。 | yii\rbac\PhpManager |
| revoke() | 撤消用户的角色。 | yii\rbac\PhpManager |
| revokeAll() | 撤消用户的所有角色。 | yii\rbac\PhpManager |
| setDefaultRoles() | 设置默认角色 | yii\rbac\BaseManager |
| trigger() | Triggers an event. | yii\base\Component |
| update() | 更新系统中指定的角色,权限或规则。 | yii\rbac\BaseManager |
| updateRule() | 更新 RBAC 系统中的规则。 | yii\rbac\PhpManager |
受保护的方法
属性详情
包含授权分配的 PHP 脚本的路径。 这可以是文件路径,也可以是文件的 路径别名。 如果需要在线更改授权,请确保 Web 服务器进程可写入此文件。
参见:
包含授权项的 PHP 脚本的路径。 这可以是文件路径,也可以是文件的 路径别名。 如果需要在线更改授权,请确保 Web 服务器进程可写入此文件。
参见:
包含授权规则的 PHP 脚本的路径。 这可以是文件路径,也可以是文件的 路径别名。 如果需要在线更改授权,请确保 Web 服务器进程可写入此文件。
参见:
方法详情
将项目添加为另一项目的子项。
| public boolean addChild($parent, $child) | ||
| $parent | yii\rbac\Item | |
| $child | yii\rbac\Item | |
| return | boolean | 是否成功添加为子项 |
|---|---|---|
| throws | yii\base\Exception | 如果父子关系已经存在或者检测到循环。 |
将一个 auth 项添加到 RBAC 系统。
| protected boolean addItem($item) | ||
| $item | yii\rbac\Item | 要添加的项目 |
| return | boolean | 是否已成功将 auth 项添加到系统中 |
|---|---|---|
| throws | Exception | 如果数据验证或保存失败(例如角色名称或权限不唯一) |
向 RBAC 系统添加规则。
| protected boolean addRule($rule) | ||
| $rule | yii\rbac\Rule | 要添加的规则 |
| return | boolean | 规则是否已成功添加到系统中 |
|---|---|---|
| throws | Exception | 如果数据验证或保存失败(例如规则名称不唯一) |
为用户分配角色。
| public yii\rbac\Assignment assign($role, $userId) | ||
| $role | yii\rbac\Role|yii\rbac\Permission | |
| $userId | string|integer | 用户 ID(见 yii\web\User::$id) |
| return | yii\rbac\Assignment | 角色分配信息。 |
|---|---|---|
| throws | Exception | 如果该角色已分配给用户 |
检查将孩子加入父项的可能性。
| public boolean canAddChild($parent, $child) | ||
| $parent | yii\rbac\Item | 父项 |
| $child | yii\rbac\Item | 要添加到层次结构中的子项 |
| return | boolean | 是否可以添加 |
|---|---|---|
| public void checkAccess($userId, $permissionName, $params = []) | ||
| $userId | ||
| $permissionName | ||
| $params | ||
对指定用户执行访问检查。 此方法由 checkAccess() 在内部调用。
| protected boolean checkAccessRecursive($user, $itemName, $params, $assignments) | ||
| $user | string|integer | 用户 ID。这应该是整数或字符串, 表示用户的唯一标识符。参阅 yii\web\User::$id。 |
| $itemName | string | 需要访问检查的操作的名称 |
| $params | array | 一个键值对,用于传递给与分配给用户任务和角色关联的规则。
名为 'user' 的参数将添加到此数组中,
该数组包含 |
| $assignments | yii\rbac\Assignment[] | 指定用户的分配 |
| return | boolean | 用户是否可以执行操作。 |
|---|---|---|
检查授权项层次结构中是否存在循环。
| protected boolean detectLoop($parent, $child) | ||
| $parent | yii\rbac\Item | 父项目 |
| $child | yii\rbac\Item | 要添加到层次结构的子项 |
| return | boolean | 是否存在循环 |
|---|---|---|
返回有关角色和用户的分配信息。
| public null|yii\rbac\Assignment getAssignment($roleName, $userId) | ||
| $roleName | string | 角色名称 |
| $userId | string|integer | 用户 ID(详见 yii\web\User::$id) |
| return | null|yii\rbac\Assignment | 分配信息。如果该角色没有分配给该用户, 则返回 Null。 |
|---|---|---|
返回指定用户的所有角色分配信息。
| public yii\rbac\Assignment[] getAssignments($userId) | ||
| $userId | string|integer | 用户 ID(详见 yii\web\User::$id) |
| return | yii\rbac\Assignment[] | 由角色名称索引的分配。如果该用户没有分配角色, 则返回空数组。 |
|---|---|---|
返回指定角色的子角色。深度不受限制。
| public yii\rbac\Role[] getChildRoles($roleName) | ||
| $roleName | string | 要为其提供子角色的角色的名称 |
| return | yii\rbac\Role[] | 子角色。该数组由角色名称索引。 第一个元素是父角色本身的一个实例。 |
|---|---|---|
| throws | yii\base\InvalidParamException | 如果找不到通过 $roleName 获取的 Role |
返回子项权限和角色。
| public yii\rbac\Item[] getChildren($name) | ||
| $name | string | 父项名 |
| return | yii\rbac\Item[] | 子项权限和角色 |
|---|---|---|
递归查找指定项的所有子项及子孙项。
| protected void getChildrenRecursive($name, &$result) | ||
| $name | string | 要查找其子项的项的名称。 |
| $result | array | 子项和子孙项(在数组键中) |
返回直接分配给用户的所有权限。
| protected yii\rbac\Permission[] getDirectPermissionsByUser($userId) | ||
| $userId | string|integer | 用户 ID(详见 yii\web\User::$id) |
| return | yii\rbac\Permission[] | 用户拥有的所有直接权限。该数组由权限名称索引。 |
|---|---|---|
返回用户从分配给他的角色继承的所有权限。
| protected yii\rbac\Permission[] getInheritedPermissionsByUser($userId) | ||
| $userId | string|integer | 用户 ID(详见 yii\web\User::$id) |
| return | yii\rbac\Permission[] | 用户拥有的所有继承权限。该数组由权限名称索引。 |
|---|---|---|
返回指定的 auth 项。
| public yii\rbac\Item getItem($name) | ||
| $name | string | Auth 项的名称。 |
| return | yii\rbac\Item | 与指定名称对应的 auth 项。如果没有这样的项目,则返回 Null。 |
|---|---|---|
返回指定类型的项。
| public yii\rbac\Item[] getItems($type) | ||
| $type | integer | Auth 项类型(yii\rbac\Item::TYPE_ROLE 或 yii\rbac\Item::TYPE_PERMISSION。 |
| return | yii\rbac\Item[] | 指定类型的 auth 项。 |
|---|---|---|
返回指定角色所代表的所有权限。
| public yii\rbac\Permission[] getPermissionsByRole($roleName) | ||
| $roleName | string | 角色名称 |
| return | yii\rbac\Permission[] | 角色所代表的所有权限。该数组由权限名称索引。 |
|---|---|---|
返回用户拥有的所有权限。
| public yii\rbac\Permission[] getPermissionsByUser($userId) | ||
| $userId | string|integer | 用户 ID(详见 yii\web\User::$id) |
| return | yii\rbac\Permission[] | 用户拥有的所有权限。该数组由权限名称索引。 |
|---|---|---|
{@inheritdoc} 此方法返回的角色包括通过 $defaultRoles 分配的角色。
| public void getRolesByUser($userId) | ||
| $userId | ||
返回指定名称的规则。
| public null|yii\rbac\Rule getRule($name) | ||
| $name | string | 规则名称 |
| return | null|yii\rbac\Rule | 规则对象,如果指定的名称与规则不对应,则为 null。 |
|---|---|---|
返回系统中可用的所有规则。
| public yii\rbac\Rule[] getRules() | ||
| return | yii\rbac\Rule[] | 由规则名称索引的规则 |
|---|---|---|
返回分配给指定角色的所有用户 ID。
| public array getUserIdsByRole($roleName) | ||
| $roleName | string | |
| return | array | 用户 ID 字符串数组 |
|---|---|---|
返回一个值,该值指示父项的子项是否已存在。
| public boolean hasChild($parent, $child) | ||
| $parent | yii\rbac\Item | |
| $child | yii\rbac\Item | |
| return | boolean | 是否 |
|---|---|---|
初始化应用程序组件。 此方法通过从 PHP 脚本加载授权数据来覆盖父实现。
| public void init() |
使给定文件的预编译脚本缓存(例如 OPCache 或 APC )失效。
| protected void invalidateScriptCache($file) | ||
| $file | string | 文件路径。 |
从文件中加载授权数据。
| protected void load() |
从 PHP 脚本文件加载授权数据。
参见 saveToFile().
| protected array loadFromFile($file) | ||
| $file | string | 文件路径。 |
| return | array | 授权数据 |
|---|---|---|
删除所有授权数据,包括角色,权限,规则和分配。
| public void removeAll() |
删除所有角色分配。
| public void removeAllAssignments() |
删除指定类型的所有认证项。
| protected void removeAllItems($type) | ||
| $type | integer | 认证项目类型(该值为 Item::TYPE_PERMISSION 或者 Item::TYPE_ROLE) |
删除所有权限。 所有父子关系将相应调整。
| public void removeAllPermissions() |
删除所有角色。 所有父子关系将相应调整。
| public void removeAllRoles() |
删除所有规则。 所有具有规则的角色和权限都将相应调整。
| public void removeAllRules() |
从父项中移除一个子项。 注意,子项目不会被删除。仅删除父子关系。
| public boolean removeChild($parent, $child) | ||
| $parent | yii\rbac\Item | |
| $child | yii\rbac\Item | |
| return | boolean | 是否删除成功 |
|---|---|---|
从父项那里删除所有子项。 注意,子项目不会被删除。仅删除父子关系。
| public boolean removeChildren($parent) | ||
| $parent | yii\rbac\Item | |
| return | boolean | 是否删除成功 |
|---|---|---|
从 RBAC 系统中删除 auth 项。
| public boolean removeItem($item) | ||
| $item | yii\rbac\Item | 要删除的项目 |
| return | boolean | 是否成功删除了角色或权限 |
|---|---|---|
| throws | Exception | 如果数据验证或保存失败(例如角色名称或权限不唯一) |
从 RBAC 系统中删除规则。
| protected boolean removeRule($rule) | ||
| $rule | yii\rbac\Rule | 要删除的规则 |
| return | boolean | 是否成功删除了规则 |
|---|---|---|
| throws | Exception | 如果数据验证或保存失败(例如规则名称不唯一) |
撤消用户的角色。
| public boolean revoke($role, $userId) | ||
| $role | yii\rbac\Role|yii\rbac\Permission | |
| $userId | string|integer | 用户 ID(详见 yii\web\User::$id) |
| return | boolean | 是否撤销成功 |
|---|---|---|
撤消用户的所有角色。
| public \yii\rbac\bool是否撤销成功 revokeAll($userId) | ||
| $userId | string|integer | 用户 ID(详见 yii\web\User::$id) |
将授权数据保存到文件中。
| protected void save() |
将授权分配数据保存到文件中。
| protected void saveAssignments() |
将授权项数据保存到文件中。
| protected void saveItems() |
将授权规则数据保存到文件中。
| protected void saveRules() |
将授权数据保存到 PHP 脚本文件。
参见 loadFromFile().
| protected void saveToFile($data, $file) | ||
| $data | array | 授权数据 |
| $file | string | 文件路径。 |
更新 RBAC 系统中的 auth 项。
| protected boolean updateItem($name, $item) | ||
| $name | string | 要更新的项目名称 |
| $item | yii\rbac\Item | 更新的项目 |
| return | boolean | 是否已成功更新 auth 项 |
|---|---|---|
| throws | Exception | 如果数据验证或保存失败(例如角色名称或权限不唯一) |
更新 RBAC 系统中的规则。
| public boolean updateRule($name, $rule) | ||
| $name | string | 要更新的规则的名称 |
| $rule | yii\rbac\Rule | 更新的规则 |
| return | boolean | 规则是否已成功更新 |
|---|---|---|
| throws | Exception | 如果数据验证或保存失败(例如规则名称不唯一) |