tomkyle / rbac
基于角色的访问控制:角色、权限和ACL
1.0.7
2014-03-12 08:32 UTC
Requires
- php: >=5.4.0
This package is auto-updated.
Last update: 2024-09-11 17:31:43 UTC
README
#tomkyle/rbac
基于角色的访问控制解决方案,从我的遗留代码库中提取。它提供了一种 权限 和 角色 系统,以及一个简单的 ACL实现。
##核心概念
###角色
客户端可以关联到某些角色,例如 作者 或 管理员。这些角色存储在包含角色ID的 RolesStorage
对象中。
<?php use \tomkyle\Roles\RolesStorage; $roles = new RolesStorage( 1, 2 ); echo $roles->contains( 2 ) ? "YES" : "NO";
###ACL 服务可能被限制为仅允许某些角色访问。 AccessControlList
作为 RolesStorage
的扩展来实现这一点
<?php use \tomkyle\Roles\RolesStorage; use \tomkyle\Roles\RolesAwareInterface; use \tomkyle\AccessControlList\AccessControlList; use \tomkyle\AccessControlList\AccessControlListAwareInterface; class MyUser implements RolesAwareInterface { use RolesAwareTrait; } class MyService implements AccessControlListAwareInterface { use AccessControlListAwareTrait; } $service = new MyService; $service->setAccessControlList( new AccessControlList( 1, 2) ); $user = new MyUser; $user->setRoles( new RolesStorage( 2, 3 ) ); echo $service->isAllowed( $user ) ? "YES" : "NO";
###权限 客户端可能被允许或禁止执行某些操作。 PermissionsStorage
将执行此操作
<?php use \tomkyle\Permissions\PermissionsAwareInterface; use \tomkyle\Permissions\PermissionsAwareTrait; use \tomkyle\Permissions\ApplyPermissionsStorage; class MyUser implements PermissionsAwareInterface { use PermissionsAwareTrait; } $user = new MyUser; // Reads users permissions from database: new ApplyPermissionsStorage( $user, $pdo ); echo $user->hasPermission( "my_action" ) ? "YES" : "NO";
##安装
此库没有依赖项,除了PDO连接。从命令行或 composer.json
文件中进行安装
#####命令行
composer require tomykle/rbac
#####composer.json
"require": {
"tomkyle/rbac": "dev-master"
}
#####MySQL 此软件包包含两个MySQL转储文件,install.sql.dist
和 install.sample-data.sql.dist
。只需执行其内容;前者安装表、索引和唯一约束,删除现有表;后者添加示例数据。请参阅表信息或字段注释中的注释。
数据库模式使用InnoDB表来更好地处理事务和关系,尽管目前尚未使用这些功能(因为我还没有使用过它)。
##数据库 角色、权限及其与客户端的关联存储在多个数据库表中
##管理 目前没有可用的管理工具。我以前曾在数据库中手动管理它们。无论如何,唯一
约束将防止您添加重复项。因此,如果您必须删除某个角色或权限,请勿忘记引用其主键的关系表。