/* * Copyright (c) 2025 SimcuTeam. All rights reserved. * 遵循 MIT 许可证。 * 声明式签名校验注解。 * * 标注在控制器方法或类上,请求派发时(SimApiRequestDelegateFactory)自动执行验签: * - 提取 appId / timestamp / nonce / sign(Query 优先,其次 Header) * - 通过 keyProvider(DI 解析)获取密钥 * - 过期校验 + nonce 去重(需缓存) * - 拼接 SignFields + appId + timestamp + nonce + key,MD5 比对 * * 用法: * @SimApiSign // 默认 SimApiSignProviderBase(应用需注册实现) * @SimApiSign["MySignProvider"] // 指定 provider 类型名(DI 注册的实现类) * * 说明:仓颉注解参数须为编译期常量,无法直接持有 Type; * 故 keyProvider 用类型名 String,运行时经 TypeInfo.get 解析后从 DI 取实例。 */ package simcu::simapi.annotations @Annotation[target: [MemberFunction, Type]] public class SimApiSign { /// 签名提供器类型名(DI 注册的 SimApiSignProviderBase 实现类名) public let keyProvider: String public const init() { this.keyProvider = "" } public const init(keyProvider: String) { this.keyProvider = keyProvider } }