我们在我们的Audit.NET核心项目中使用Asp.Net库来记录用户操作。最近,我们决定使用哈希科普库来安全地存储和获取秘密,包括数据库凭据。保险库引擎自动旋转数据库凭据的时间配置,因此静态凭证不再是一个选项。
因此,我们必须实现一个服务,该服务将服务到所需服务的当前连接字符串(我们正在使用PostgreSql)。在DB上下文中,可以使用Startup.cs中的以下代码在运行时获取连接字符串
services.AddDbContext<AppDbContext>((serviceProvider, options) =>
{
var databaseCredentialsProvider = serviceProvider.GetRequiredService<IDbConnectionStringProvider>();
var connectionString = databaseCredentialsProvider.GetConnectionString();
options.UseNpgsql(connectionString);
});但是,关于Audit.NET配置,它似乎只能设置静态凭据。我们在Startup.cs中使用以下代码来配置Audit.NET。
Audit.Core.Configuration.Setup()
.UsePostgreSql(config => config
.ConnectionString(Configuration.GetConnectionString(""))
.Schema("")
.TableName("")
.IdColumnName("")
.DataColumn("", DataType.JSONB)
.LastUpdatedColumnName("");
);我查看了UsePostgreSql的源代码--它只设置了一次凭据,所以不能使用这个扩展方法。
是否有任何方法配置Audit.NET以动态获取数据库凭据?那么,我应该实现自定义的UsePostgreSql提供程序吗?
发布于 2020-10-04 23:26:16
使用最新版本,您现在可以将配置值设置为函数,以便在创建审计事件时检索这些值。例如:
Audit.Core.Configuration.Setup()
.UsePostgreSql(config => config
.ConnectionString(_ => serviceProvider.GetRequiredService<IDbConnectionStringProvider>().GetConnectionString())
.Schema("")
.TableName("")
.IdColumnName("")
.DataColumn("", DataType.JSONB)
.LastUpdatedColumnName("");
);https://stackoverflow.com/questions/64168845
复制相似问题