2009-12-23 81 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