Безопасная передача пароля в asp.net core 6.0 через переменную среды
appsettings.json:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"MailSettings": {
"SmtpLogin": "[email protected]",
"Password": "",
"Host": "smtp.server.com",
"Port": 465
}
}
MailSettings.cs:
public class MailSettings
{
public string SmtpLogin { get; set; }
public string Password { get; set; }
public string Host { get; set; }
public int Port { get; set; }
}
program.cs:
IConfigurationSection conf = builder.Configuration.GetSection("MailSettings");
builder.Services.Configure<MailSettings>(conf);
MailController.cs:
public class MailController : ControllerBase
{
private readonly IOptions<MailSettings> demoOptions;
public MailController(IOptions<MailSettings> demoOptions)
{
this.demoOptions = demoOptions;
}
}
в переменных среды есть переменная:
PASS=1234
При запуске приложения, строка
builder.Services.Configure<MailSettings>(conf);
передает в контроллер заполненный объект MailSettings, данные для которого берутся из appsettings.json, где поле Password пустое. Это хорошо, но я хочу до передачи данных в контроллер полю MailSettings.Password присвоить значение переменной среды PASS, чтобы контроллер получил объект demoOptions.Password == 1234
Кто знает как это сделать? Как заменить значение поля Password="" из appsettings.json значением переменной среды?