krubio / perfect-rbac
RBAC - 基于角色的访问控制
v0.1.2
2023-10-15 17:51 UTC
Requires
- ext-pdo: *
- krubio/perfect-database: ^0.1.0
- nunomaduro/phpinsights: ^2.8
Requires (Dev)
- codeception/codeception: ^5.0
- codeception/module-asserts: *
- phpstan/phpstan: ^1.10
- vimeo/psalm: ^5.12
This package is auto-updated.
Last update: 2024-09-15 20:25:43 UTC
README
RBAC授权服务文档
RBAC(基于角色的访问控制)授权服务提供了一种简单有效的方法,在PHP应用程序中实现基于角色的访问控制。本文档将指导您如何使用RBAC类及其方法进行用户角色授权和权限检查。
先决条件
在使用RBAC授权服务之前,请确保您有以下条件
- 系统上已安装PHP
- 启用PDO扩展(用于数据库连接)
- 数据库中已包含所需表(user_roles、roles、role_permissions和permissions),并已填充相关数据
类概述
RBAC授权服务包括以下类
AuthorizationService
:提供方法以检查用户角色是否基于一组允许的角色授权。PermissionsRepository
:处理从数据库检索用户角色的权限。UserRolesRepository
:处理从数据库检索用户角色。
入门
要开始使用RBAC授权服务,请按照以下步骤操作
- 在PHP文件中包含必要的RBAC类
use PerfectApp\RBAC\AuthorizationService; use PerfectApp\RBAC\PermissionsRepository; use PerfectApp\RBAC\UserRolesRepository;
- 使用适当的数据库连接详情创建PDO类的实例。
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
- 创建
PermissionsRepository
和UserRolesRepository
类的实例,将PDO实例传递给它们的构造函数。
$permissionsRepository = new PermissionsRepository($pdo); $userRolesRepository = new UserRolesRepository($pdo);
- 创建
AuthorizationService
类的实例,将UserRolesRepository
实例传递给其构造函数。
$authorizationService = new AuthorizationService($userRolesRepository);
- 现在您可以使用RBAC授权服务在您的应用程序中。
检查用户角色授权
AuthorizationService
类提供isUserRoleAuthorized
方法,用于检查用户角色是否基于一组允许的角色授权。
/** * @param int $userId * @param array<mixed> $allowedRoles * @return bool */ public function isUserRoleAuthorized(int $userId, array $allowedRoles): bool
参数
$userId
(整数):需要检查其角色的用户的ID。$allowedRoles
(数组):允许的角色数组。用户的角色将与这些角色进行比较。
返回值
- 如果用户的角色与任何允许的角色匹配,则返回
true
,表示授权。 - 如果用户的角色不匹配任何允许的角色或发生错误,则返回
false
。
示例用法
$userId = 1; $allowedRoles = ['admin', 'editor']; if ($authorizationService->isUserRoleAuthorized($userId, $allowedRoles)) { echo "User is authorized."; } else { echo "User is not authorized."; }
检查用户角色权限
PermissionsRepository
类提供userRoleHasPermission
方法,用于检查用户角色是否具有特定的权限。
/** * @param int $userId * @param string $requiredPermission * @return bool */ public function userRoleHasPermission(int $userId, string $requiredPermission): bool
参数
$userId
(整数):需要检查其角色权限的用户的ID。$requiredPermission
(字符串):所需权限的名称。
返回值
- `
如果用户的角色具有所需的权限,则返回`true`。
- 如果用户的角色没有所需的权限或发生错误,则返回`false`。
示例用法
$userId = 1; $requiredPermission = 'edit_post'; if ($permissionsRepository->userRoleHasPermission($userId, $requiredPermission)) { echo "User has the required permission."; } else { echo "User does not have the required permission."; }
结论
您现在已学会了如何使用RBAC授权服务在PHP应用程序中执行用户角色授权和权限检查。通过遵循提供的说明和示例,您可以将RBAC功能轻松集成到应用程序中,以根据用户角色和权限控制访问。