yiisoft / rbac-rules-container
基于 "yiisoft/factory" 的 RBAC 规则容器
2.1.0
2024-03-07 10:57 UTC
Requires
- php: ^8.1
- psr/container: ^1.0|^2.0
- yiisoft/definitions: ^1.0|^2.0|^3.0
- yiisoft/factory: ^1.0
- yiisoft/rbac: ^2.0
Requires (Dev)
- maglnet/composer-require-checker: ^4.2
- phpunit/phpunit: ^9.5
- rector/rector: ^1.0.0
- roave/infection-static-analysis-plugin: ^1.18
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.30|^5.6
- yiisoft/di: ^1.0
- yiisoft/test-support: ^3.0
This package is auto-updated.
Last update: 2024-09-22 13:05:20 UTC
README
Yii RBAC 规则容器
本包是一个创建 Yii RBAC (基于角色的访问控制) 规则的工厂。它提供基于 Yii 工厂 的规则容器,并使用 Yii 定义 语法。RBAC 管理器接受规则名称和参数作为规则,并且设计上不知道其创建过程,委托给规则容器以保持职责分离。
需求
- PHP 8.1 或更高版本。
安装
可以使用 Composer 安装此包
composer require yiisoft/rbac-rules-container
通用使用
直接与规则容器交互
use Psr\Container\ContainerInterface; use Yiisoft\Rbac\Item; use Yiisoft\Rbac\RuleInterface; use Yiisoft\Rbac\Rules\Container\RulesContainer; /** * Checks if user ID matches `authorID` passed via parameters. */ final class AuthorRule implements RuleInterface { public function execute(string $userId, Item $item, array $parameters = []): bool { return $parameters['authorID'] === $userId; } } $rulesContainer = new RulesContainer(new MyContainer()); $rule = $rulesContainer->create(AuthorRule::class);
MyContainer
是一个解决依赖关系的容器,必须是Psr\Container\ContainerInterface
的一个实例。也可以使用 Yii 依赖注入 的实现。- 您可以设置 定义 并在需要时禁用它们的验证。
基本上,参数与 Yii 工厂 中的一样。请参阅其文档以获取更多详细信息。
规则仅创建一次,然后缓存并重复使用。
$rule = $rulesContainer->create(AuthorRule::class); // Returned from cache
使用 Yii 配置
use Yiisoft\Di\Container; use Yiisoft\Di\ContainerConfig; use Yiisoft\Rbac\RuleFactoryInterface; use Yiisoft\Rbac\Rules\Container\RulesContainer; // Need to be moved to separate files accordingly $params = [ 'yiisoft/rbac-rules-container' => [ 'rules' => ['author' => AuthorRule::class], 'validate' => false, ], ]; $config = [ RuleFactoryInterface::class => [ 'class' => RulesContainer::class, '__construct()' => [ 'definitions' => $params['yiisoft/rbac-rules-container']['rules'], 'validate' => $params['yiisoft/rbac-rules-container']['validate'], ], ], ]; $containerConfig = ContainerConfig::create()->withDefinitions($config); $container = new Container($containerConfig); $rulesContainer = $container->get(RuleFactoryInterface::class); $rule = $rulesContainer->create('author');
文档
如果您需要帮助或有疑问,Yii 论坛 是一个好去处。您还可以查看其他 Yii 社区资源。
许可证
Yii RBAC 规则容器是免费软件。它根据 BSD 许可证发布。有关更多信息,请参阅 LICENSE
。
由 Yii 软件 维护。