dotkernel/dot-authorization

DotKernel 授权服务抽象

3.5.2 2024-08-22 10:47 UTC

This package is auto-updated.

Last update: 2024-09-22 10:58:28 UTC


README

定义了用于与 DotKernel 应用程序一起使用的授权服务的接口的基础授权包。

OSS Lifecycle PHP from Packagist (specify version)

GitHub issues GitHub forks GitHub stars GitHub license

Build Static codecov

SymfonyInsight

安装

在您的项目目录中运行以下命令

$ composer require dotkernel/dot-authorization

请注意,通常此包将被安装为具体实现的依赖项,因此您不需要手动将其添加到项目中。

AuthorizationInterface

定义了任何授权服务应实现的接口,以便与 DotKernel 应用程序一起工作。这是由于默认情况下,任何与授权相关的 DotKernel 包都假设使用此接口的完全限定名(FQN)在服务容器中注册了一个服务。

方法

public function isGranted(string $permission, array $roles = [], $context = null): bool;
  • 这是唯一处理授权的方法。给定一个权限和一系列角色,如果至少有一个角色有权访问请求的权限,则应返回一个布尔值 true。如您所见,我们期望授权服务以 RBAC(基于角色的访问控制)方式实现。

RoleInterface

定义了角色对象必须实现的接口。角色对象应能够检索其名称,因此此接口只有一个方法定义

public function getName(): string;

IdentityInterface

需要由支持角色的实体实现的接口。它们应能够通过定义一个 getRoles() 方法来检索其角色。角色应为一组角色名称或角色对象数组

此包适合 RBAC 风格的授权。角色可以是扁平的或层次结构的,并且它们被分配权限。如果角色拥有所需的权限,则授予该角色。

ForbiddenException

当未具有所需的权限而访问内容时抛出的异常。这可以在应用程序中使用来触发禁止错误并执行自定义操作(如显示禁止页面或重定向)。此包不定义您应该如何处理此类情况。在 dot-rbac 中有一个具体的授权实现,以及在 dot-rbac-guard 中有一个禁止异常处理器,作为 DotKernel 的默认授权包。