2014-08-29 59 views
1

將ASP.Net Identity 2提供程序模型與普通Authorize屬性結合使用。ASP.Net Identity 2,HttpRequestBase.LogonUserIdentity

匿名訪問爲真,Windows身份驗證被禁用。

HttpRequestBase.IsAuthenticated將返回true,但HttpRequestBase.LogonUserIdentity不會返回實際的ClaimsIdentity,而是返回一個模擬用戶(因爲我在本地運行IIS Express)。

來自提供者的實際認證並返回的ClaimsIdentity可通過例如

HttpContext.Current.User...和/或System.Threading.Thread.CurrentPrincipal...

問:爲什麼不通過HttpRequestBase.LogonUserIdentity

回答

0

我第一次看到使用這個屬性。 documentation表示此屬性應返回當前用戶的WindowsIdentity。 MVC應用程序不知道登錄用戶的WindowsIdentity,因爲沒有這樣的事情。

此外在source code這個屬性eventually要求服務器變量。

我通常通過ClaimsPrincipal.Current訪問當前登錄用戶,從未見過用戶從HttpRequestBase.LogonUserIdentity檢索到。
HttpRequestBase.IsAuthenticatedidentical調用HttpContext.Current.User.IsAuthenticated與幾個空檢查。

+0

試想一下'LogonUserIdentity'這個名字就暗示着「用戶身份認同」;-) – Daniel 2014-08-29 10:03:46

+0

它的確如此!名稱具有誤導性,同樣的方式'IdentityUser.LockoutEnabled'不是用戶當前被鎖定的標誌。命名很難並導致問題。 – trailmax 2014-08-29 10:05:31