gpt4 book ai didi

c# - Entity Framework Core 是否支持数据库密码轮换

转载 作者:行者123 更新时间:2023-12-02 03:16:54 25 4
gpt4 key购买 nike

场景:

  1. NET Core 2.2 中的 Web Api 应用程序,它部署在多个容器上。
  2. 在 Startup 中,我从 HashiCorp Vault 中读取数据库密码并将其放入我的连接字符串中。
  3. 我将 Entity Framework Core 上下文添加到服务集合。
  4. 我在多个 Controller 中使用上下文。

如果我在 Vault 中更改数据库密码,所有对数据库的请求都会因身份验证错误而失败。

我可以关闭所有容器,当它们重新启动时它们将拥有新密码,但这不是我想要做的。有一些 hacky 方法可以解决这个问题,但它们涉及不使用服务集合,而我想使用它。

问题:

EF Core 是否支持密码轮换,或者有没有办法在仍然使用服务集合的同时实现这一点?

最佳答案

您应该能够将 DbContext 添加到 DI 中,并传递一个创建实例的委托(delegate),该实例基本上控制连接字符串的静态性质,并在运行时计算出正确的字符串。

services.AddScoped<YourDbContext>(svc =>
{
var connString = ... logic to get the conn string with the right password from HashiCorp vault;
var dbContextOptions = new DbContextOptionsBuilder<YourDbContext>();
dbContextOptions.UseSqlServer(connString); //Or w/e ef provider for db you use
return new YourDbContext(dbContextOptions.Options);
});

关于c# - Entity Framework Core 是否支持数据库密码轮换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55873460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com