0

HttpContext.User其是ClaimsPrincipal具有Claims的集合,但HttpContext.User還具有ClaimsIdentity的集合,其具有權利要求書和甚至像IsAuthenticatedName相同的屬性的集合。HttpContext.User.Claims vs HttpContext.User.Identities.Claims?區別?何時使用其中一種?

對於管理員用戶模仿的情況,有什麼目的或何時使用某個用戶?還是代表團?他們似乎能夠根據角色和主張追蹤相同的信息。如果我想讓一個用戶模擬另一個用戶,看起來好像我可以用模擬用戶覆蓋HttpContext.User,只是存儲一個值來表明它是一個模擬和原始用戶,或者我可以將模擬的用戶添加到ClaimsIdentities ?或者是其他東西?

我只是不知道這個結構,以確定利弊或如果有更好的方法。

回答

1

你不能使用一個。如果Identities屬性(ClaimsIdentity的集合)中有一個ClaimsIdentity,則User.Identity將返回該標識。這是很容易驗證與基本登錄功能的應用程序。

enter image description here

Claims屬性將返回所有在Identities屬性中的每個身份索賠。平凡的是,如果你只有一個身份,那麼你只能以這種身份獲得主張。

擁有多個身份的基本思想與您攜帶駕駛執照,巴士通行證和工作證卡在您的錢包中的原因相同。每個身份都可以讓您「訪問」不同的區域,並允許您(合法地)執行單獨的操作。

+0

這很有道理,謝謝。 – SventoryMang

相關問題