gpt4 book ai didi

.net - 同时实现 IPrincipal 和 IIdentity 是好是坏?

转载 作者:行者123 更新时间:2023-12-05 00:44:15 26 4
gpt4 key购买 nike

因为 IPrincipal 具有 Identity 属性,在我的 User 类上实现这两个接口(interface)是否很好?

最佳答案

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

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

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

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

关于.net - 同时实现 IPrincipal 和 IIdentity 是好是坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/308278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com