tourze/json-rpc-security-bundle

JsonRPC授权处理

Installs: 1 361

Dependents: 1

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

Type:symfony-bundle

0.0.3 2025-04-15 10:45 UTC

This package is auto-updated.

Last update: 2025-05-08 07:49:43 UTC


README

这个Symfony Bundle提供了JSON-RPC服务的授权处理机制。

安装

composer require tourze/json-rpc-security-bundle

功能特性

  • 支持Symfony Security组件集成
  • 为JSON-RPC方法提供权限检查能力
  • 通过属性(Attribute)声明方法所需权限

使用方法

  1. 在你的Symfony项目中添加此Bundle:
// config/bundles.php
return [
    // ...
    Tourze\JsonRPCSecurityBundle\JsonRPCSecurityBundle::class => ['all' => true],
];
  1. 在你的JSON-RPC方法类上使用IsGranted属性:
use Symfony\Component\Security\Http\Attribute\IsGranted;
use Tourze\JsonRPC\Core\Domain\JsonRpcMethodInterface;

#[IsGranted("ROLE_ADMIN")]
class AdminMethod implements JsonRpcMethodInterface
{
    // ...
}
  1. 也可以使用MethodPermission属性来声明更细粒度的权限:
use Tourze\JsonRPCSecurityBundle\Attribute\MethodPermission;
use Tourze\JsonRPC\Core\Domain\JsonRpcMethodInterface;

#[MethodPermission("user.edit", "编辑用户信息")]
class UserEditMethod implements JsonRpcMethodInterface
{
    // ...
}

单元测试

单元测试使用PHPUnit进行,可以通过以下命令运行:

./vendor/bin/phpunit packages/json-rpc-security-bundle/tests

当前测试覆盖情况:

  • MethodPermission属性类:基本测试完成
  • JsonRPCSecurityBundle类:基本测试完成
  • JsonRPCSecurityExtension类:基本测试完成
  • GrantService服务:受限于PHP反射API,部分测试被跳过
  • IsGrantSubscriber事件订阅器:受限于事件类的设计,测试被跳过
  • 集成测试:需要JsonRPCBundle支持,当前未能完全实现

贡献代码

欢迎提交Pull Request或Issue。