wlfpanda1012/easy-sts
Composer 安装命令:
composer require wlfpanda1012/easy-sts
包简介
集成式Sts
README 文档
README
介绍
一款简单易用的 临时访问凭证(StsToken) 封装包.
写法上借鉴了 Hyperf 的 FileSystem 包.
使用了 适配器 的方式实现了 不同服务端的 Sts 接口.
只需要做简单的配置即可使用.
平台支持
安装
composer require wlfpanda1012/easy-sts # 如果 需要用天翼云 composer require wlfpanda1012/ctyun-sts # 如果 需要用阿里云 composer require wlfpanda1012/aliyun-sts
单独包传送门
- wlfpanda1012/ctyun-sts 天翼云STS
- wlfpanda1012/aliyun-sts 阿里云STS
发布配置
php bin/hyperf.php vendor:publish wlfpanda1012/easy-sts
配置用例
<?php declare(strict_types=1); use Wlfpanda1012\EasySts\Adapter\AliyunStsAdapterFactory; use Wlfpanda1012\EasySts\Adapter\CtyunStsAdapterFactory; use Wlfpanda1012\EasySts\Adapter\LocalStsAdapterFactory; use function Hyperf\Support\env; return [ // 默认配置 // 预留了非公网环境的STS使用可能性(未来项目需求,暂未开发) // 配置 default 修改为 aliyun 或者 ctyun // 配置好对应的环境变量即可 'default' => 'local', 'adapter' => [ 'local' => [ 'driver' => LocalStsAdapterFactory::class, 'accessId' => 'username', 'accessSecret' => 'password', ], 'aliyun' => [ 'driver' => AliyunStsAdapterFactory::class, 'accessId' => env('ALIYUN_STS_ACCESS_ID'), 'accessSecret' => env('ALIYUN_STS_ACCESS_SECRET'), 'roleArn' => env('ALIYUN_STS_ROLE_ARN', 'acs:ram::xxxxxxxxxxx:role/xxx'), 'roleSessionName' => env('ALIYUN_STS_ROLE_SESSION_NAME', 'xxxxxxxxxxx'), 'endpoint' => env('ALIYUN_STS_ENDPOINT', 'sts.cn-hangzhou.aliyuncs.com'), 'durationSeconds' => env('ALIYUN_STS_DURATION_SECONDS', 3600), 'externalId' => env('ALIYUN_STS_EXTERNAL_ID', 'external_id_test'), ], 'ctyun' => [ 'driver' => CtyunStsAdapterFactory::class, 'accessId' => env('CTYUN_STS_ACCESS_ID'), 'accessSecret' => env('CTYUN_STS_ACCESS_SECRET'), 'endpoint' => env('CTYUN_STS_ENDPOINT', 'oos-cn-iam.ctyunapi.cn'), 'durationSeconds' => env('CTYUN_STS_DURATION_SECONDS', 3600), ], ], ];
使用
⚠️ 注意:
- 不同的平台对应的
policy的写法略微不同。getToken请自定义对应的policy进行传入。- 好的,我知道大家并不想写
Policy,但各位在对文件的访问控制的颗粒度如果需要到具体文件的程度,那就并不是写死的config就能搞定的了。- 所以我在
easySts项目里 我接口中增加了各个不同的服务的policy的生成用接口。
默认配置
在 Hyperf 下可以使用,因为在 ConfigProvider 已经做了映射配置。
如果你想在 Laravel 或者别的框架中使用默认配置的写法的话,以 Laravel 举例,可以写一个 ServiceProvider 类,并在 register 方法中注册即可。
具体写法可以参照我另外一个包 Laravel-passport-cache 的 CacheServiceProvider.php
use Wlfpanda1012\CommonSts\Sts; $sts = new Sts(); $policy = []; $sts->getToken() $token = $sts->getToken($policy);
自定义配置
use Wlfpanda1012\EasySts\StsFactory; $sts = (new (StsFactory::class))->get('ctyun'); $policy = []; $token = $sts->getToken($policy);
Policy生成
- 实现的接口
public function storagePolicy(string $effect, array $actions, array|string $path, array $config = []): array- effect = ALLOW/DENY actions = 根据不同的平台 actions 的写法不同,目前使用的是Aliyun OSS, path 可以为单一的string,如果是复数文件则用数组. config 里 可以写入其他配置(比如 桶名字,UID 等 具体配置参数不同平台的
key不同,可以查看代码)
Storage(文件存储)
use Wlfpanda1012\EasySts\StsFactory; $sts = new Sts(); $policy = $sts->storagePolicy(OSSEffect::ALLOW->value, [OSSAction::ALL_GET->value], $urls, $config); $token = $sts->getToken($policy);
wlfpanda1012/easy-sts 适用场景与选型建议
wlfpanda1012/easy-sts 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 48 次下载、GitHub Stars 达 1, 最近一次更新时间为 2024 年 10 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「php」 「hyperf」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 wlfpanda1012/easy-sts 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 wlfpanda1012/easy-sts 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 wlfpanda1012/easy-sts 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
统计信息
- 总下载量: 48
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 12
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-10-08