-2

在 ASP .NET Core Web 应用程序中,我注意到可以将连接字符串放入apsettings.jsonsecret.json文件中,如下所示:

应用设置.json

{
   "ConnectionStrings": {
    "DBConnectionString": "DefaultEndpointsProtocol=https;AccountName=name;AccountKey=the_key;EndpointSuffix=core.windows.net"
  }
}

秘密.json

{
  "ConnectionStrings:DBConnectionString": "DefaultEndpointsProtocol=https;AccountName=name;AccountKey=the_key;EndpointSuffix=core.windows.net"
}

而且,它在startup.cs中使用。

public class startup
{
  public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<AppDBContext>(options =>
                options.UseSqlServer(
                    Configuration.GetConnectionString("DBConnectionString")));
        }
}

问题:

以同样的方式,以下是连接字符串在 ASP .NET Core Web 应用程序中的一个控制器中传递的方式:

博客上传控制器.cs

 AccountName = "MyAccount";
 AccountKey = "DGKC5745dfdG_+dkfkld";

 string UserConnectionString = string.Format("DefaultEndpointsProtocol=https;AccountName=name;AccountKey=DGAKSECCDI654D_FGd;EndpointSuffix=core.windows.net", AccountName, AccountKey);

可以看到我在代码中直接放了“连接字符串”和“AccountKey”(容易受到安全威胁)。任何人都可以像我在上面的例子中放入数据库连接字符串一样放入 apsettings.json 或 Secret.json。

提前致谢。

4

1 回答 1

3

添加东西appsettings.json就像编辑 JSON 一样简单。采取以下习俗appsettings.json

{
    "Setup": "Setup Value",    
    "Config": {
        "Key": "My Key",
        "Token": "My Token"
    }
}

为了从上面获取自定义值,您可以使用setup.csAPS.NET Core 文件中的 Configuration 变量。

string setup = Configuration["Setup"];

要获取诸如 之类的值Config.Key,请用冒号分隔名称:,例如:

string key = Configuration["Setup:Key"];
string token = Configuration["Setup:Token"];

请注意,使用appsettings.json来保存机密是一个坏主意,因为appsettings.json通常是公共文档而不是机密文件。

于 2021-05-22T20:11:45.150 回答