feat: 实现 SimApiStorage(S3/MinIO 存储)
- 自实现 AWS Signature V4(HMAC-SHA256 基于 stdx SHA256),无需 Minio SDK - getUploadUrl / getDownloadUrl(预签名 PUT/GET) - uploadFile(直接 PUT 上传)、fullUrl / getUrl / getPath - 构造时检测并自动创建桶(静态守卫只执行一次) - 注册为 Scoped 以注入 IHttpContextAccessor(soulsoft DI 禁止 singleton 消费 scoped) - 签名核心已用 AWS 官方测试向量验证(最终签名 5d672d79... 一致) - README 同步(未实现表移除、新增 5.3 存储章节)
This commit is contained in:
@@ -136,6 +136,14 @@ private func addSimApiCore(builder: WebHostBuilder, options: SimApiOptions): Web
|
||||
builder.services.addSingleton<SimApiHttpClient, SimApiHttpClient>()
|
||||
}
|
||||
|
||||
// 存储(S3/MinIO,对齐 C# AddHttpContextAccessor + AddSingleton<SimApiStorage>;
|
||||
// 仓颉版注册为 Scoped 以便注入 IHttpContextAccessor(DI 禁止 singleton 消费 scoped),
|
||||
// 桶初始化由静态守卫保证只执行一次)
|
||||
if (options.enableSimApiStorage) {
|
||||
builder.services.addHttpContextAccessor()
|
||||
builder.services.addScoped<SimApiStorage, SimApiStorage>()
|
||||
}
|
||||
|
||||
// AuthGate 认证中心 SDK(对齐 C# 注册 SimApiAuthClient/Center/Iam 单例)
|
||||
if (options.enableSimApiAuthGate) {
|
||||
builder.services.addSingleton<SimApiAuthClient, SimApiAuthClient>()
|
||||
@@ -194,7 +202,8 @@ extend WebHost <: SimApiHostExtensions {
|
||||
logger.info("开始配置 SimApiCache...")
|
||||
}
|
||||
|
||||
// SimApiStorage(占位)
|
||||
// SimApiStorage(已实现:addSimApi 中注册 Scoped,桶初始化惰性执行;
|
||||
// 对齐 C# 的 GetService 预热,但 scoped 服务不能从根解析,故仅输出配置日志)
|
||||
if (options.enableSimApiStorage) {
|
||||
logger.info("开始配置 SimApiStorage...")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user