Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Audit.NET动态获取数据库凭据_C#_Asp.net Core_Hashicorp Vault_Audit.net - Fatal编程技术网

C# Audit.NET动态获取数据库凭据

C# Audit.NET动态获取数据库凭据,c#,asp.net-core,hashicorp-vault,audit.net,C#,Asp.net Core,Hashicorp Vault,Audit.net,我们正在使用Asp.Net核心项目中的库来记录用户操作。最近,我们决定使用来安全地存储和获取机密,包括数据库凭据。Vault引擎在配置的时间段内运行,因此静态凭据不再是选项 因此,我们必须实现一个服务,该服务将为所需服务提供当前连接字符串(我们使用的是PostgreSql)。对于DB上下文,可以在运行时使用Startup.cs中的以下代码获取连接字符串: services.AddDbContext<AppDbContext>((serviceProvider, options) =

我们正在使用Asp.Net核心项目中的库来记录用户操作。最近,我们决定使用来安全地存储和获取机密,包括数据库凭据。Vault引擎在配置的时间段内运行,因此静态凭据不再是选项

因此,我们必须实现一个服务,该服务将为所需服务提供当前连接字符串(我们使用的是PostgreSql)。对于DB上下文,可以在运行时使用Startup.cs中的以下代码获取连接字符串:

 services.AddDbContext<AppDbContext>((serviceProvider, options) =>
        {
            var databaseCredentialsProvider = serviceProvider.GetRequiredService<IDbConnectionStringProvider>();
            var connectionString = databaseCredentialsProvider.GetConnectionString();
            options.UseNpgsql(connectionString);
        });
我已经浏览了UsePostgreSql的源代码-它只设置了一次凭据,因此不能使用此扩展方法


有没有办法配置Audit.NET以动态获取数据库凭据?那么,我是否应该实现自定义使用PostgreSQL提供程序?

使用最新版本,您现在可以将配置值设置为函数,以便在创建审核事件时检索这些值。例如:

Audit.Core.Configuration.Setup()
    .UsePostgreSql(config => config
        .ConnectionString(_ => serviceProvider.GetRequiredService<IDbConnectionStringProvider>().GetConnectionString())
        .Schema("")
        .TableName("")
        .IdColumnName("")
        .DataColumn("", DataType.JSONB)
        .LastUpdatedColumnName("");
    );

Audit.Core.Configuration.Setup()
.UsePostgreSql(config=>config
.ConnectionString(=>serviceProvider.GetRequiredService().GetConnectionString())
.Schema(“”)
.TableName(“”)
.IdColumnName(“”)
.DataColumn(“,DataType.JSONB)
.LastUpdatedColumnName(“”);
);

我认为提供一个
ConnectionStringBuilder
作为
Func
,就像。因此,每次要保存事件时,都会解析连接字符串。您是否可以访问github项目?Audit.Core.Configuration.Setup应该在启动时位于ConfigureServices中?目前,我在配置中有Audit.EntityFramework.Configuration.Setup、Audit.Core.Configuration.AddCustomAction和Audit.Core.Configuration.Setup。如果您需要DI机制中的某些内容,应该将其放在
Configure
方法上,否则可以放在任意位置。
Audit.Core.Configuration.Setup()
    .UsePostgreSql(config => config
        .ConnectionString(_ => serviceProvider.GetRequiredService<IDbConnectionStringProvider>().GetConnectionString())
        .Schema("")
        .TableName("")
        .IdColumnName("")
        .DataColumn("", DataType.JSONB)
        .LastUpdatedColumnName("");
    );