我有一個使用Windows身份驗證的asp.net intranet應用程序。幾年前,我使用VS 2005創建了應用程序,並且Windows身份驗證位完美工作。我的web.config具有以下(內線配置 - > system.web元素):HttpContext.Current.User未填充啓用Windows身份驗證
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
我測試這在Firefox中確認的憑證是必需的,而且確實提示我爲我的網絡憑據第一時訪問該網站,如果它們無效,我將被拒絕。
但是,當我嘗試訪問HttpContext.Current.User.Identity時,該對象具有Name和AuthenticationType的空字符串,並且Authenticated = false。我想我可能需要啓用WindowsTokenRoleProvider查看周圍的interwebs後,這並沒有改變任何東西。
<roleManager defaultProvider="WindowsProvider" enabled="true" cacheRolesInCookie="false">
<providers>
<clear/>
<add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider"/>
</providers>
</roleManager>
兩件事情,我,因爲我已經看到了它的工作是通過轉換向導項目升級到VS 2008中最後一次做,我也把它放下了好幾個月,而我的同事可能已經在這裏或那裏工作過。我非常肯定,唯一影響到我的User.Identity的是上面提到的web.config中的值,但顯然我做錯了什麼。其他人遇到類似的問題或看到我做錯了什麼?謝謝。
你在IE中測試過嗎? – 2009-07-31 22:21:26
是的......在IE中測試。我提到Firefox的唯一原因是因爲IE會自動傳遞您的憑據,而FF會強制您通過提示登錄。這就是我知道我阻止匿名訪問,但我仍然得到User.Identity – Rich 2009-07-31 23:22:42
上的空白信息當你說「當我嘗試訪問HttpContext.Current.User.Identity」,在頁面生命週期的哪一點是你這樣做? – Bullines 2009-08-08 17:04:56