【发布时间】:2019-06-14 22:37:52
【问题描述】:
我有一个使用 EF Core 的 ASP.NET Core 2.2 项目,供多个客户使用。每个客户都有自己的数据库,具有由 IRepository(动态加载的数据库集)管理的完全相同的模式。它是多子域项目,我想在 account.example.com 上登录使用,经过身份验证的用户将重定向到网站 B site.example.com 通过 Cookie Authentication 授权。
网站 A,位于 www.example.com
网站 B,位于 site.example.com -(我的应用程序)
网站 C,位于 account.example.com -(ASP.NET Identity -.Net Core 2.2)
public MydbContext(string dbName)
{
this.Database.GetDbConnection().ChangeDatabase(dbName);
}
但它得到了默认连接字符串,该字符串是在 startup.cs 类的 ConfigureServices 中添加的。如何使用 Session 将当前用户的连接字符串从 Cookie 存储在 HttpContext.User 中,并更改每个查询的 DBContext 的连接字符串。
【问题讨论】:
-
@RuardvanElburg 如何使用 Session 将当前用户的连接字符串从 Cookie 存储在 HttpContext.User 并通过 每个查询.
-
我不确定您为什么要将连接字符串存储在 cookie 或会话中。一开始你是怎么设置的?当用户删除 cookie 或切换设备时会发生什么?您可以在 DbConnectionInfo 中访问会话:
httpContextAccessor.HttpContext.Session。如果您需要在一个请求中访问不同的数据库,请考虑注入不同上下文的单独服务,或者考虑工厂模式。 -
@RuardvanElburg 我第一次这样做,但当我重定向到其他页面时,我收到错误
session has not been configured for this application or request.
标签: c# entity-framework asp.net-core database-connection dbcontext