我在asp.net核心MVC Web应用程序中有以下appsettings.json
:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\ProjectsV13;Database=LandingPage;Trusted_Connection=True;"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"SMTP": {"
"pass": "************"
}
}
字符串
当我将应用程序发布到共享主机提供程序时,我将在appsettings.json的连接字符串中添加SQL Server用户名和密码。
所以我的问题是,我如何加密我的appsettings.json
内托管在IIS内的远程共享主机提供商内的部分?我可以在Visual Studio项目中保留密码,但我想加密托管的appsettings.json?这可能吗?
谢谢
1条答案
按热度按时间zc0qhyus1#
我如何加密我的appsettings.json中托管在IIS内部的远程共享托管提供程序中的部分?我可以将密码保存在Visual Studio项目中,但我想加密托管的appsettings.json?这可能吗?
首先,你需要以某种方式
encrypt the password
。这里你有很多选择。官方推荐使用**Data Protection**如下:
字符串
然后,在您的项目中,您将在appsettings.json文件下找到一个appsettings.Development.json文件。
默认情况下,开发环境中使用的变量存储在appsettings.Development.json中,生产环境中使用的变量存储在appsettings. json文件中。
因此,您可以将加密的内容放在appsettings.json文件中,并将未加密的密码放在appsettings.Development.json文件中。
并确保它们在json中的密钥相同,但值一个是加密的,另一个是未加密的。
然后,在调用密码的控制器中,注入
DataProtection
、IHostingEnvironment
和IConfiguration
三个服务,然后在获取值之前判断环境是生产还是开发环境,再决定是否解密该值。型
在appsetting.json文件中:
型
在appsetting.Development.json文件中:
型