通过用户登录确定具有数据库访问权限的单个Web应用

时间:2019-06-24 22:21:24

标签: c# asp.net entity-framework-core razor-pages

我有一个Web应用程序,允许用户查看数据。我们的用户来自几个不同的位置,每个位置都有自己的数据库。我希望能够基于用户的登录名连接到适当的数据库,很不幸,我对ASP.NET/EF Core / Razor Pages还不够熟悉,无法弄清楚该如何做。

我已经查看了一些文档和其他文章,但尚未找到最终的解决方案。我怀疑我可能需要为每个数据库实例化一个上下文,然后在页面加载时使用DI来选择适当的上下文,但我不确定该解决方案从哪里开始。

用户存储在完全独立的数据库中,该数据库用于我们的IdentityContext。目前,仅向我们的客户之一提供此Web应用程序,因此Startup.cs代码如下所示:

services.AddDbContext<Models.MyContext>(options =>
{                    
    options.UseSqlServer(Configuration.GetConnectionString("ConnectionStringIdentifier"));
});

我正在寻找有关解决此问题的最佳策略的建议。我是否需要使用每个不同的连接字符串来调用services.AddDbContext <...>(...)?用户登录后,有什么方法可以在运行时更改上下文的数据库吗?根据我的阅读,前者似乎比后者更有可能。 EFCore上下文似乎不允许对其Database属性进行任何操作,并且Razor页面的上下文被传递到构造函数中,而我从未在自己的代码中手动对其进行调用。

任何建议都值得赞赏,谢谢!

0 个答案:

没有答案