场景:
- 使用NET Core 2.2编写的Web Api应用程序,在多个容器上部署。
- 在启动时,从HashiCorp Vault读取密码并将其放入连接字符串中。
- 将Entity Framework Core上下文添加到服务集合中。
- 在多个控制器中使用上下文。
如果我更改Vault中的数据库密码,则由于身份验证错误,所有对数据库的请求都将失败。
我可以关闭所有容器,当它们重新启动时,将拥有新的密码,但这不是我想要做的。 有一些笨拙的方法可以解决这个问题,但它们涉及不使用服务集合,而我想使用它。
问题:EF Core是否支持密码轮换,或者是否有一种方法可以在仍然使用服务集合的情况下实现此目的?
最初的回答: EF Core不会自动旋转密码。你可以使用IOptionsSnapshot和IOptionsMonitor来获取选项的快照,并根据需要更新连接字符串。这将允许您更改Vault中的密码且无需停止应用程序。