2025-11-02 22:14:34 +08:00
|
|
|
using SimApi.Exceptions;
|
|
|
|
|
|
2025-11-02 18:58:01 +08:00
|
|
|
namespace SimApi.ModelBinders;
|
|
|
|
|
|
|
|
|
|
public abstract class SimApiSignProviderBase
|
|
|
|
|
{
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// appId字段的名称
|
|
|
|
|
/// </summary>
|
2025-11-02 22:14:34 +08:00
|
|
|
public virtual string? AppIdName { get; set; } = "appId";
|
2025-11-02 18:58:01 +08:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 时间戳的字段名
|
|
|
|
|
/// </summary>
|
2025-11-02 22:14:34 +08:00
|
|
|
public virtual string TimestampName { get; set; } = "timestamp";
|
2025-11-02 18:58:01 +08:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 随机字符串的字段名
|
|
|
|
|
/// </summary>
|
2025-11-02 22:14:34 +08:00
|
|
|
public virtual string NonceName { get; set; } = "nonce";
|
2025-11-02 18:58:01 +08:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 签名的字段名
|
|
|
|
|
/// </summary>
|
2025-11-02 22:14:34 +08:00
|
|
|
public virtual string SignName { get; set; } = "sign";
|
2025-11-02 18:58:01 +08:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 请求过期时间, 如果为0, 不校验timestamp
|
|
|
|
|
/// </summary>
|
2025-11-02 22:14:34 +08:00
|
|
|
public virtual int QueryExpires { get; set; } = 5;
|
2025-11-02 18:58:01 +08:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 如果开启,必须配置redis, 每次请求将会缓存nonce
|
|
|
|
|
/// </summary>
|
2025-11-02 22:14:34 +08:00
|
|
|
public virtual bool DuplicateRequestProtection { get; set; } = true;
|
2025-11-02 18:58:01 +08:00
|
|
|
|
2025-11-02 22:14:34 +08:00
|
|
|
public virtual string[] SignFields { get; set; } = [];
|
2025-11-02 18:58:01 +08:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据appId获取对应的密钥
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="appId">应用ID</param>
|
|
|
|
|
/// <returns>密钥(返回null表示获取失败)</returns>
|
|
|
|
|
public abstract string? GetKey(string? appId);
|
|
|
|
|
}
|