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