arthem/request-signer-bundle
Composer 安装命令:
composer require arthem/request-signer-bundle
包简介
Symfony Request signer bundle
README 文档
README
This bundle helps you to sign requests in order to provide access to protected resources.
Adapters
Supported providers:
- AWS S3 (composer req arthem/jwt-request-signer)
- Local with JWT (composer req arthem/jwt-request-signer)
Installation & configuration
composer require arthem/request-signer-bundle
Configure your signers:
# config/packages/arthem_request_signer.yaml services: s3_client: class: Aws\S3\S3Client arguments: - region: us-east-2 version: "2006-03-01" credentials: key: '%env(AWS_ACCESS_KEY)%' secret: '%env(AWS_SECRET_KEY)%' arthem_request_signer: signers: my_local_jwt: # your signer name jwt: # signer adapter ttl: 120 # in seconds signing_key: '%env(resolve:MY_SIGNING_KEY)%' aws_images: # your signer name aws_s3: # signer adapter bucket_name: 'my_bucket' service_id: 's3_client' # id of your s3 client service
# .env MY_SIGNING_KEY=change-me AWS_ACCESS_KEY=change-me AWS_SECRET_KEY=change-me
Usage
Sign your asset URLs:
<?php namespace App\Serializer\Normalizer; use App\Entity\Asset; use Arthem\RequestSignerBundle\RequestSigner; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; abstract class ApiNormalizer { private UrlGeneratorInterface $urlGenerator; private RequestSigner $requestSigner; private RequestStack $requestStack; protected function generateAssetUrl(Asset $asset): string { return $this->requestSigner->signUri( $this->urlGenerator->generate('asset_preview', ['id' => $asset->getId()], UrlGeneratorInterface::ABSOLUTE_URL), $this->requestStack->getCurrentRequest(), [ 'signer' => 'aws_images', // override default adapter (optional) 'ResponseContentDisposition' => 'attachment; filename=image.jpg', // Force S3 download ] ); } }
If validation is made by your application:
<?php namespace App\Controller; use Arthem\RequestSignerBundle\RequestSigner; use Arthem\RequestSignerBundle\Exception\InvalidSignatureException; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\Routing\Annotation\Route; class AssetController { /** * @Route("/assets/{id}", name="asset_preview") */ public function previewAction(string $id, Request $request, RequestSigner $requestSigner) { try { $requestSigner->validateRequest($request); } catch (InvalidSignatureException $e) { throw new AccessDeniedHttpException($e->getMessage()); } // Stream asset here } }
arthem/request-signer-bundle 适用场景与选型建议
arthem/request-signer-bundle 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 4.46k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2020 年 04 月 02 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 arthem/request-signer-bundle 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 arthem/request-signer-bundle 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 4.46k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 4
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-04-02