【发布时间】:2015-01-22 08:13:53
【问题描述】:
那么,IIdentity 和 IPrincipal 存在的目的是什么,而不是一些 IIdentityMergedWithPrincipal?什么时候在同一个类中实现两者还不够?
另外,为了理解目的,我想知道这个概念的来源:
- 起源于.Net
- 有 Identity/Principal 作为设计模式的概念,
System.Security.Principal在这些接口中实现 - 它起源于其他地方并支持兼容性
因此,System.DirectoryServices 中的UserPrincipal 的行为是否与IPrincipal 类似,但不是偶然或有意实现的?
附:我正在寻找想法背后的推理,而不是利益/争议比较,所以请尽量不要开始基于意见的讨论
【问题讨论】:
-
您是否阅读过许多其他人的以下文章msdn.microsoft.com/en-us/library/ee748503.aspx您不明白什么..?尝试阅读 `PrincipalContect 以及我认为您将更好地了解如何以及为什么
-
Active Directory
Principal类与核心 .NET 框架中的IIdentity和IPrincipal完全没有关系。它们是完全独立的,在任何形式、形状或形式上都没有关联(除了命名......) -
当然,Active Directory 主体不依赖于 IPrincipal,但我认为存在隐式连接。例如:比较 IPrincipal.IsInRole(string role) 和 UserPrincipal.IsMemberOf(GroupPrincipal group)。我认为可以围绕 UserPrincipal 编写自定义 IPrincipal 包装器
-
应该注意的是,绝对没有理由如果你真的想创建一个实现
IPrincipal和IIdentity的具体类型,那是完全没有理由的。public class MyIdentityMergedWithPrincipal : IPrincipal, IIdentity。另一方面,如果接口被整合成一个,您将无法像现在那样(并且可能应该)将它们分开。单独的接口用于单独的关注点。
标签: c# .net iprincipal iidentity