Asp.net-Mvc
ClaimsPrincipal.Current 與 HttpContext.Current.User?
在 MVC 中,這兩個有什麼區別?
它們看起來相同,甚至返回相同的類型/類
System.Web.Security.RolePrincipal,但有一些細微之處。例如。以下程式碼在針對通過 ClaimsPrincipal.Current 生成的實例呼叫時會引發各種錯誤
cp.FindFirst(ClaimTypes.Name); //{"Unable to connect to SQL Server database."} <--HUH!? cp.Claims; //{"Value cannot be null.\r\nParameter name: username"}當 cp 是這樣時,上述方法有效:
var cp = System.Web.HttpContext.Current.User通過快速查看深入了解私人成員時,我可以看到他們都有相同的 Claim 字典。但是,無論出於何種原因,當針對由返回的對象呼叫時,公共屬性都會爆炸
ClaimsPrincipal.Current幫助 - 這是為什麼!?這真讓我抓狂。
=============編輯===================
應該差不多該睡覺了。
IPrincipal 支持多種身份。它需要某種商店。IIdentity 返回一個 ClaimsIdentity 的實例並且不需要儲存。
我只是鑽了錯誤的屬性。他們兩個的形狀幾乎相同,即。相同的屬性和方法,我讓他們感到困惑。
身份是目前經過身份驗證的使用者,主體是程式碼執行的安全上下文。
這篇文章是一個很好的解釋,我發現它很有用http://msdn.microsoft.com/en-us/library/ftx85f8x.aspx。