1

我有一个天蓝色的网络应用程序。

我的解决方案如下:

  1. 我的应用程序网站
  2. MyApp.WebjobTasks
  3. MyApp.WebjobAnotherTask

Web 作业是 Web 应用程序的一部分。它们都共享相同的数据层以通过实体框架和 Azure 门户访问数据,当定义应用程序设置时,应用程序设置在所有项目 Web 应用程序和 Web 作业配置文件中被覆盖。

对于同一数据库,所有项目都有一个连接字符串键作为“DefaultConnection”。

但我想更改 webjobs 的用户(有更多的权限来做家务)。所以 Webjob 应该能够 ALTER/Truncate 表,而 MyApp.Web 应该只有 db_datareader 和 _db_datawriter 角色。

我怎样才能多样化呢?如果我将 Azure 门户中的连接字符串键更改为使用有权更改数据库的用户,那么这不是一个好的解决方案,即面向公众的应用程序将获得不必要的权限。

如果每个应用程序在 Azure 门户中都有自己的应用程序设置页面,那就太糟糕了。这样每个应用程序都可以运行不同的用户权限。

有没有更好的方法来实现这一目标?或者我应该在 webjobs 的 app.config 中添加新的用户和密码密钥,并在运行家政工作之前读取这些密钥以更新连接字符串?

4

1 回答 1

1

我建议不要即时更改connection string。这可能会产生竞争条件。

connection strings如果他们有不同的职责,我建议为这些网络工作添加额外的内容。但是,DbContext如果您当前没有注入connection string.

不同connection strings的是,如果需要,更容易将 Web 作业迁移到另一个地方(即 Azure Functions 或其他),并且您的 Web 作业被限制执行它们不允许执行的 db 操作,例如如果作业仅用于清理审核日志则创建用户.

于 2017-12-12T13:48:36.133 回答