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 | 如果数据验证或保存失败(例如规则名称不唯一) |