設置模擬,我創建了一個非常簡單的項目,它試圖計算兩個目錄中文件的數量。 User1
不允許訪問Directory2
和User2
不允許訪問Directory1
。由於模擬,我只能得到一個號碼,這取決於正在呼叫我的應用程序的用戶。這兩個用戶都設置爲管理員。爲了第一次理解,使用ASP.NET
因此,我在Visual Studio 2015(在Windows 8.1上運行)中創建了一個新的MVC項目,並選擇使用Windows身份驗證。一旦應用程序啓動並運行(在ISS Express中),我在我的機器上切換到User1
(沒有Active Directory)並在Internet Explorer中調用網站(是,在設置中啓用了「集成Windows身份驗證」)。通過此設置,HttpContext.User.Identity
中的用戶User1
和WindowsIdentity.GetCurrent()
是我的開發用戶,是我在Visual Studio中使用的用戶。
我也嘗試手動模擬:「要麼未提供所需的模擬級別,或提供的模擬級別無效」
WindowsIdentity winId = (WindowsIdentity)User.Identity;
WindowsImpersonationContext ctx = null;
try
{
ctx = winId.Impersonate();
// GetNumbers() tries to get the number of files for both directories
numbers = GetNumbers();
}
catch (Exception e)
{
}
finally
{
if (ctx != null)
{
ctx.Undo();
}
}
不幸的是,我得到的異常有些人聲稱這個人解決了他們的問題:https://kc.mcafee.com/corporate/index?page=content&id=KB56194不適合我。我已將User1
和我自己的用戶添加到列表中並重新啓動計算機。不用找了。
唯一給我帶來一點希望的是使用單獨登錄的模仿,如https://msdn.microsoft.com/en-us/library/ms998351.aspx#paght000023_impersonatingusinglogonuser所述。缺點非常明顯:我必須擁有用戶密碼,如果用戶已經登錄爲我做了。
雖然這是不被我大的變化一個新的項目,只是爲了完整性檢查一些信息...
我Web.config
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
我的項目設置
- 「匿名身份驗證」是
false
- 「Windows authenticat離子」是
true
- ‘管理pipline模式’
Integrated
什麼改變,使這個簡單的項目按預期方式工作有什麼建議?
最好的問候, 卡斯滕