我試圖創建我的MVC網站一個簡單的動作過濾器,檢查對那些允許訪問該網站當前的Windows用戶匿名。出於某種原因,filterContext.HttpContext.User.Identity
對象始終設置爲匿名且沒有用戶名。我試圖在不同的階段(OnAuthenticate和OnAuthorize)抓住它,但它始終是匿名的。Windows標識始終在ASP.NET請求管道
我目前在IIS中啓用匿名和 Windows身份驗證(居然也跟着this example配置Windows身份驗證功能),而且我在system.web
節點我的web.config以下塊:
<authentication mode="Windows" />
<authorization>
<allow users="*" />
<deny users="?" />
</authorization>
但是出於某種原因,身份始終是匿名的,沒有用戶名。我必須在這裏失去一些東西。使用Windows身份驗證在IIS中設置,我總是被提示輸入用戶名/密碼組合(這實際上失敗,HTTP401.1錯誤0xc000006d
,但我認爲這可能是因爲我有很大的發展自定義主機頭設置)。我也看到了暗示,這是因爲我的網站被確定爲在互聯網區和答案必須說明的站點添加到Internet Explorer中的內部網區的幾篇文章。這看起來像是一個創可貼的解決方案,而不是實際的解決方案。
理想情況下,我想有以下幾點:
- 用戶瀏覽到我的網站
- 的場景,他們的Windows用戶名拾起,並反對由應用程序管理允許用戶通過身份驗證的背後
- 用戶認證成功,頁面加載,用戶不明智,他們被認證
我需要做什麼來實現這一目標?
在此先感謝您的幫助。請讓我知道,如果我可以提供更多的上下文。
編輯:忘了補充,我在Windows 7 SP1上運行此,IIS 7.5
您需要完成登錄,而不Windows Identity之前將設置一個401。否則你的身份將是匿名的。就內聯網區域而言,我從來沒有遇到過這個問題。使用本地主機進行身份驗證時可能會出現問題。 –