首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时实现IPrincipal和IIdentity是好还是坏?

同时实现IPrincipal和IIdentity是好还是坏?
EN

Stack Overflow用户
提问于 2008-11-21 09:44:31
回答 1查看 2K关注 0票数 4

因为IPriincipal具有IIdentity属性,所以在我的User类上同时实现这两个接口是否合适?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-11-21 14:52:00

通常,用户和用户交互的安全上下文是不同的东西,因此,如果以通用方式建模,则应该像IPrincipal和IIdentity接口那样将它们分开。(您可以想象,在应用程序中,同一用户可以有不同的角色来与系统交互。)

在某些应用程序中,这两个概念是相同的,在这种情况下,我认为您可以使用单个类安全地实现这两个接口。如果不直接通过IPrincial和IIdentity接口将实现类公开给应用程序逻辑,情况尤其如此。如果你保持这种分离,你可以在不破坏应用程序逻辑的情况下随时重构你的类。

您应该记住的另一个方面是:通常,为用户设置安全上下文比设置身份(您需要获取权限等)的成本更高。但是,在某些情况下,应用程序只是引用用户,但并不要求具有正确配置的安全上下文。在这些情况下,初始化同时充当标识和主体的user类实例可能是一个性能问题。(当然,您也可以使用其他技术来解决这个问题,而不仅仅是通过拆分类来解决。)

最后,您还应该考虑是否要用自己的user类实现IIdentity/IPrincipal元素,还是只填充GenericPrincipal/GenericIdentity实例。这里最重要的事实是,IPrincipal (和IIdentity)实例必须是可序列化的,因为它们可能会转到其他AppDomains。设置一个可以在AppDomains中轻松序列化和反序列化的IPrincipal实现并非易事,需要格外小心。因此,除非您需要特殊的角色检查,否则我建议使用GenericPrincipal/GenericIdentity。(更多信息请点击这里:http://sontek.vox.com/library/post/re-iprincipal-iidentity-ihttpmodule-serializable.html)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/308278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档