refactor: 所有配置优先从环境变量读取,完全支持Docker环境变量注入

This commit is contained in:
claw_bot 2026-03-09 08:56:26 +00:00
parent 739a37f24d
commit f2d4351145
5 changed files with 42 additions and 14 deletions

View File

@ -52,15 +52,26 @@ builder.Services.AddCors(options =>
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
// 优先从环境变量读取JWT配置
var jwtSecretKey = Environment.GetEnvironmentVariable("Jwt__SecretKey")
?? builder.Configuration["Jwt:SecretKey"]
?? "your-strong-secret-key-here-2026";
var jwtIssuer = Environment.GetEnvironmentVariable("Jwt__Issuer")
?? builder.Configuration["Jwt:Issuer"]
?? "AssetManager";
var jwtAudience = Environment.GetEnvironmentVariable("Jwt__Audience")
?? builder.Configuration["Jwt:Audience"]
?? "AssetManager";
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "AssetManager",
ValidAudience = "AssetManager",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your-strong-secret-key-here-2026"))
ValidIssuer = jwtIssuer,
ValidAudience = jwtAudience,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSecretKey))
};
});

View File

@ -22,9 +22,10 @@ public static class SqlSugarConfig
throw new InvalidOperationException("SqlSugarConfig has not been initialized. Call Initialize() first.");
}
// 从配置读取连接字符串支持环境变量和appsettings.json
var connectionString = _configuration.GetConnectionString("Default")
?? throw new InvalidOperationException("Connection string 'Default' not found in configuration.");
// 优先从环境变量读取连接字符串
var connectionString = Environment.GetEnvironmentVariable("ConnectionStrings__Default")
?? _configuration.GetConnectionString("Default")
?? throw new InvalidOperationException("Connection string 'Default' not found in environment variables or configuration.");
return new SqlSugarScope(new ConnectionConfig()
{

View File

@ -23,9 +23,10 @@ public class MarketDataService : IMarketDataService
{
_logger = logger;
_httpClient = httpClientFactory.CreateClient();
// 从配置读取 Tiingo API Key优先环境变量
_tiingoApiKey = Environment.GetEnvironmentVariable("TIINGO_API_KEY")
?? configuration["Tiingo:ApiKey"]
// 优先从环境变量读取 Tiingo API Key
_tiingoApiKey = Environment.GetEnvironmentVariable("Tiingo__ApiKey")
?? Environment.GetEnvironmentVariable("TIINGO_API_KEY")
?? configuration["Tiingo:ApiKey"]
?? "bd00fee76d3012b047473078904001b33322cb46";
_httpClient.DefaultRequestHeaders.Add("Authorization", $"Token {_tiingoApiKey}");
}

View File

@ -14,9 +14,18 @@ public class JwtService
public JwtService(IConfiguration configuration)
{
_secretKey = configuration["Jwt:SecretKey"] ?? "your-strong-secret-key-here-2026";
_issuer = configuration["Jwt:Issuer"] ?? "AssetManager";
_audience = configuration["Jwt:Audience"] ?? "AssetManager";
// 优先从环境变量读取
_secretKey = Environment.GetEnvironmentVariable("Jwt__SecretKey")
?? configuration["Jwt:SecretKey"]
?? "your-strong-secret-key-here-2026";
_issuer = Environment.GetEnvironmentVariable("Jwt__Issuer")
?? configuration["Jwt:Issuer"]
?? "AssetManager";
_audience = Environment.GetEnvironmentVariable("Jwt__Audience")
?? configuration["Jwt:Audience"]
?? "AssetManager";
}
public string GenerateToken(string userId, string userName, string email)

View File

@ -14,8 +14,14 @@ public class WechatService
public WechatService(HttpClient httpClient, IConfiguration configuration)
{
_httpClient = httpClient;
_appId = configuration["Wechat:AppId"] ?? "wx245f0f3ebcfcf5a7";
_appSecret = configuration["Wechat:AppSecret"] ?? "809c740129bc8b434177ce12ef292dd0";
// 优先从环境变量读取
_appId = Environment.GetEnvironmentVariable("Wechat__AppId")
?? configuration["Wechat:AppId"]
?? "wx245f0f3ebcfcf5a7";
_appSecret = Environment.GetEnvironmentVariable("Wechat__AppSecret")
?? configuration["Wechat:AppSecret"]
?? "809c740129bc8b434177ce12ef292dd0";
}
public async Task<WechatAuthResult> GetOpenIdAsync(string code)