Part4 – (33) 与配置系统的集成
ASP.NET Core默认添加的配置提供者
1)加载现有的IConfiguration。
2)加载项目根目录下的appsettings.json。
3)加载项目根目录下的appsettings.{Environment}.json。
4)当程序运行在开发环境下,程序会加载“用户机密”配置。
5)加载环境变量中的配置。 6)加载命令行中的配置。
配置的环境问题
1、Why?开发环境、测试环境、生产环境需要进行不同配置。
2、运行环境:ASP.NET Core 会从环境变量中读取名字为ASPNETCORE_ENVIRONMENT的值。推荐值:Development(开发环境)、Staging(测试环境)、Production(生产环境)。
3、读取方法:app.Environment.EnvironmentName、app.Environment.IsDevelopment()……
4、在Windows和VS(推荐开发时用)中设置环境变量的方法。
Part4 – (34) 防止机密信息泄露
User Secrets
1、把不方便放到appsettings.json中的机密信息放到一个不在项目中的json文件中。
2、在ASP.NET Core项目上单击鼠标右键,选择【管理用户机密】。
3、secrets.json文件到底保存在哪里?如何和项目建立关系?csproj文件中的<UserSecretsId>
注意事项
1、供开发人员使用的,不适合在生产环境中使用。
2、仍然是明文存储。不想别人看到怎么办?Azure Key Vault、Zack.AnyDBConfigProvider等。无法完全避免。加强安全防控更重要。
3、如果因为重装、新员工等原因导致secrets.json重建,就要重新配置,麻烦。如果影响大的话,还是用集中式配置服务器。
Part4 – (35) 配置系统综合案例
需求:
1) 系统的主要配置(Redis、Smtp)放到配置专用的数据库中。Zack.AnyDBConfigProvider
2) 连接配置数据库的连接字符串配置在“用户机密”中。”Data Source=.;Initial Catalog=demo1;Integrated Security=SSPI;”
3) 把Smtp的配置显示到界面上。
4) 程序启动的时候就连接Redis,并且把Redis连接对象注册到依赖注入系统中。
builder.Services.AddSingleton<IConnectionMultiplexer>(sp => {
string connStr = builder.Configuration.GetValue<string>("Redis:ConnStr");
return ConnectionMultiplexer.Connect(connStr);
});
本文版权归个人技术分享站点所有,发布者:chaoqiang,转转请注明出处:https://www.zhengchaoqiang.com/1516.html