ASP.NET Core-如何解密和使用加密的配置部分?

时间:2018-11-26 08:21:29

标签: c# encryption asp.net-core

我遵循了this answer,现在不确定如何获取正确的值并在代码中使用它们。

这是我要使用的配置部分:

  "ConnectionStrings": {
    "connString1": "CfDJ8P1kYd0KR1J........",
    "connString2": "CfDJ8P1kYd0KR1J........"
  }

这是我的Startup.cs文件:

        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);


            services.AddProtectedConfiguration();

            services.ConfigureProtected<ProtectedConnectionStrings>(Configuration.GetSection("ConnectionStrings"));

            services.AddDbContext<MyDBContext>(options =>
            options.UseSqlServer(Configuration.GetSection("ConnectionStrings")["connString2"]));
.
.
.


但是我从配置中获得的值未解密。
此外,从Configuration.GetSection()返回的对象是常规ConfigurationSection对象(而不是我拥有的自定义ProtectedConfigurationSection对象)。

是否应该将加密的值存储在appsettings.json文件中?还是将它们存储在key-....文件中?

我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您必须使用DI从服务中获取未加密的值。

public class MySQLClass
{
    public MySQLClass(IOptions<ConnectionStrings> connectionStrings)
    {
        string unencryptedCS = connectionStrings.Value.connString1;
    }
}