什麼是IPrincipal/IIdentity優勢,而不是擁有包含您需要的屬性的自定義User類並將其用於認證/授權?將用戶存儲在IPrincipal/IIdentity中有什麼好處?
回答
顯而易見的好處如下:應用程序的身份驗證&授權的整體概念是圍繞以下方式構建的:主體和身份,表示爲IPrincipal
/IIdentity
。正因爲如此,內置機制通常假定使用這兩種機制。如果他們被使用,建立在機制可以工作。
以Web應用程序爲例。 HttpContext
的終身用戶申請表示爲IPrincipal
。通過符合這個約定,您允許授權機制正確地評估用戶是否被允許訪問網絡資源。這是因爲WebForms UrlAuthorization
的模塊和MVC的Authorization
屬性都假定主體以此標準方式存儲。
在桌面應用程序中,您有Thread
的CurrentPrincipal
這也是IPrincipal
。
更換IPrincipal
/IIdentity
與您自己的認證/授權接口將永遠。您將不得不重寫基本類庫的大部分處理認證/授權的部分,而不是內置在您要依靠自定義實現的接口中。
但是,我不完全明白你提出的兩個陳述之間的任何反對意見。您詢問了IPrincipal
優於自定義課程的優勢。但是IPrincipal
只是一個接口(!!),您的自定義類可以輕鬆實現。與IIdentity
相同。然後,您可以將您的自定義課程放在任何地方IPrincipal
預計。
當然,這可能有點棘手,例如在Web應用程序中,您將不得不替換內置的驗證模塊來設置IPrincipal
。最常用的有兩種 - FormsAuthenticaiton
,它使用GenericPrincipal
/FormsIdentity
和SessionAuthenticationModule
,它使用ClaimsPrincipal
/ClaimsIdentity
。相比之下,您的自定義模塊可以使用您想要的任
「在桌面應用程序中,您有Thread的CurrentPrincipal」 - 也是在服務器應用程序中。 – Joe 2014-09-13 13:00:18
@Joe:true。我只想舉一些例子,而不是全部。 – 2014-09-13 14:14:16
Active Directory,Windows Identity Foundation和Windows本身的標準身份驗證方法都使用IPrincipal
和IIdentity
。基本上,如果你想使用任何內置的認證機制,你必須使用這些類。通常,您將擁有一個自定義數據庫模式來存儲用戶信息,並且您將從該數據創建IPrincipal
和IIdentity
對象以執行身份驗證。
- 1. 在數組中存儲類似變量有什麼好處嗎?
- 2. 在SQL和MySQL中創建存儲過程有什麼好處?
- 3. 在子域中存儲客戶端文件(img,css,javascript)有什麼好處?
- 4. 將塊存儲在實例變量中有什麼用處
- 5. 使用Hazelcast代替MongoDB來存儲用戶會話/密鑰有什麼好處?
- 6. 使用Asp.Net Identity 2將用戶信息存儲在AspNetUserClaim中有什麼好處嗎?
- 7. 在Amazon S3上使用多個存儲桶還是整合到一個存儲桶中有什麼好處?
- 8. 在像SQL這樣的數據庫中存儲數據有什麼好處?
- 9. 在InstallShield中,ICE有什麼好處?
- 10. 在登錄時重新存儲密碼有沒有什麼好處?
- 11. 執行存儲過程時,使用CommandType.StoredProcedure與使用CommandType.Text有什麼好處?
- 12. 元組有什麼好處?
- 13. StringBuilders有什麼好處?
- 14. 粘液有什麼好處?
- 15. AJAX有什麼好處?
- 16. 「svn:externals」有什麼好處?
- 17. Cakephp,它有什麼好處?
- 18. cURL有什麼好處?
- 19. ConcurrentSkipListMap有什麼好處?
- 20. VS2010 SP1有什麼好處?
- 21. AnkhSVN有什麼好處?
- 22. JRebel有什麼好處?
- 23. WTP有什麼好處
- 24. 反射有什麼好處?
- 25. Assert() - 它有什麼好處?
- 26. Boost IPC有什麼好處?
- 27. 協程有什麼好處?
- 28. python類有什麼好處?
- 29. Django:存儲用戶偏好
- 30. 將用戶名和密碼存儲在cookie中有什麼問題?
它們是接口,你不在接口中「存儲用戶」。它們具有通常的接口優點,即與特定實現無關的合同。讓你的班級實施這些界面是否有用是有點令人懷疑的,但是不清楚這個問題。 – 2014-09-13 12:48:51