2009-12-23 54 views
1

所以我们有我们的网络应用程序与实体框架。我们想要做的是在访问数据库时模拟当前用户。我们不想在我们的网页配置中设置模拟。用实体框架模拟用户

理想情况下,当我们要访问数据时使用类似这样的内容:http://geekswithblogs.net/jkurtz/archive/2007/08/27/114992.aspx

更新:我正在寻找一种方法来抽象出这段代码,所以我不必在每个存储库函数调用中都有它。

回答

2

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

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

然后只是这样做:

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

using语句的大括号中的代码都将运行作为身份验证的用户。

+0

好的,这与我发布的链接类似,但我正在寻找一种方法将它抽象到EF事件(或某处)中,我不必在每个存储库函数中都声明它。 – RailRhoad 2009-12-23 20:05:51

+0

可能不是最好的主意。当您想在系统标识下执行查询时会发生什么?我一定会保持模拟选择,而不是选择退出。 – 2009-12-29 01:25:38

+0

我想知道这是否适用于Azure SQL数据库的新Active Directory集成身份验证。其实我想要做的是模仿一个SQL Server身份验证登录。 – CalvinDale 2017-05-04 18:01:47