因爲IPriincipal具有IIdentity屬性,所以在我的User類上實現這兩個接口都很好嗎?同時實施IPrincipal&IIdentity是好還是不好?
4
A
回答
6
通常,用戶和用戶交互的安全上下文是不同的事情,因此如果以通用方式建模,這些應該與IPrincipal和IIdentity接口一樣分離。 (你可以想象應用程序中同一個用戶可以有不同的角色來與系統進行交互)。
有兩個概念相同的應用程序,在這種情況下,我認爲你可以安全地使用一個類實現兩個接口。如果您不直接通過IPrincial和IIdentity接口將實現類直接暴露給應用程序邏輯,那麼尤其如此。如果你保持這種分離,你可以隨時重構你的類,而不會破壞應用程序邏輯。
你應該記住另一個方面:通常設置爲用戶的安全上下文,而不是建立一個身份(你需要獲取權限等)更昂貴。但是,在某些情況下,應用程序只是指用戶,但不需要具有正確配置的安全上下文。在這些情況下,初始化用作身份和主體的用戶類實例可能是性能問題。 (當然,你也可以通過其他技術來解決這個問題,不僅僅是分開課程)。
最後,你還應該考慮,無論你是想用你自己的用戶類來實現IIdentity/IPrincipal,還是隻想填充GenericPrincipal/GenericIdentity實例。這裏最重要的事實是,IPrincipal(和IIdentity)實例必須是可序列化的,因爲它們可能會轉到其他AppDomains。設置一個可在AppDomain中輕鬆序列化和反序列化的IPrincipal實現並非易事,需要特別小心。所以除非你需要特殊的角色檢查,否則我會推薦使用GenericPrincipal/GenericIdentity。 (詳見這裏:http://sontek.vox.com/library/post/re-iprincipal-iidentity-ihttpmodule-serializable.html)
相關問題
- 1. MembershipProvider,IPrincipal,IIdentity?
- 2. 重構好還是不好?
- 3. 實體框架和IPrincipal/IIdentity的實現
- 4. IIdentity購物車IPrincipal
- 5. 模擬IIdentity和IPrincipal
- 6. 是不是還好用AuthenticationContext時從ADAL
- 7. 將用戶存儲在IPrincipal/IIdentity中有什麼好處?
- 8. 我的fstream不好還是不好()?
- 9. 如果用戶類實現IPrincipal和IIdentity
- 10. 聲明是更好還是相同?
- 11. 什麼是更好的實施策略?
- 12. 是DroidText還好嗎?
- 13. 施放還是不施放?
- 14. 實用程序類別..好還是壞?
- 15. C++中的大型抽象類是好還是不好?
- 16. 在存儲過程中使用@@標識是好還是不好?
- 17. Java流程服務器是好還是不好?
- 18. 在mysql中解釋更高的行數是好還是不好?
- 19. 保險是好還是不好的方式?
- 20. 我的線程設計是好還是不好?
- 21. 使用javascript創建html內容是好還是不好
- 22. 問題實施的IPrincipal
- 23. 這是最好的ForeignKey還是選擇?有什麼不同?
- 24. 它是好還是不好有臨時字段來保存模塊
- 25. 每秒限制訪問整個Web腳本:好主意還是不好?如何實施?
- 26. IDENTITY列 - 好還是壞?
- 27. Qt還是j2me更好?
- 28. 多表好還是壞?
- 29. 內聯元素中的div:不好還是不好?
- 30. Javascript - 使用參數關閉,不好還是不好?