Entity framework 用实体框架模拟用户

Entity framework 用实体框架模拟用户,entity-framework,impersonation,Entity Framework,Impersonation,因此,我们有我们的web应用程序,并与实体框架。我们要做的是在访问数据库时模拟当前用户。我们对在web配置中设置模拟不感兴趣 理想情况下,使用这样的方式:当我们即将访问数据时 更新:我正在寻找一种方法来提取此代码,这样我就不必在每次存储库函数调用中都使用它。您的EF连接字符串需要设置为使用可信连接 您不需要在web.config中设置模拟,但需要使用Windows身份验证 那么就这样做: using (((WindowsIdentity)HttpContext.Current.User.Iden

因此,我们有我们的web应用程序,并与实体框架。我们要做的是在访问数据库时模拟当前用户。我们对在web配置中设置模拟不感兴趣

理想情况下,使用这样的方式:当我们即将访问数据时


更新:我正在寻找一种方法来提取此代码,这样我就不必在每次存储库函数调用中都使用它。

您的EF连接字符串需要设置为使用可信连接

您不需要在web.config中设置模拟,但需要使用Windows身份验证

那么就这样做:

using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate())
using (var dbContext = new MyEntityFrameworkContainer())
{
    ...
}

using语句的大括号内的任何代码都将作为经过身份验证的用户运行。

好的,这与我发布的链接类似,但我正在寻找一种方法,将其抽象为EF事件(或某个地方),在该事件中,我不必在每个存储库函数中不断声明。这可能不是最好的主意。如果要在系统标识下执行查询,会发生什么情况?我肯定会保留模拟选择加入而不是选择退出。我想知道这是否适用于Azure SQL数据库的新Active Directory集成身份验证。实际上,我想做的是模拟SQL Server身份验证登录。有人能解释一下为什么我们要在模拟语句中使用using构建一个新的上下文吗?