限制LDAP查询中返回的属性
如何通过System.DirectoryServices限制LDAP查询中返回的属性?
我一直在使用DirectorySearcher并将我想要的属性添加到DirectorySearcher.PropertiesToLoad。 问题是,这只是确保添加的属性包含在DirectoryEntry.Properties以及一些默认列表中。 有没有办法指定您想要返回的唯一属性?
DirectoryEntry base = new DiectoryEntry(rootPath, null, null, AuthenticationTypes.FastBind); DirectorySearcher groupSearcher = new DirectorySearcher(base); groupSearcher.Filter = "(objectClass=group)"; groupSearcher.PropertiesToLoad.Add("distinguishedName"); groupSearcher.PropertiesToLoad.Add("description"); foreach (SearchResult groupSr in groupDs.FindAll()) ...
在foreach循环中,当我获得组DirectoryEntry时,我可以访问大约16种不同的属性,而不仅仅是我指定的两个属性(distinguishedName,description)
您正在限制的东西是您的SearchResult
对象中可用/填充的属性 – 您可以直接在foreach
循环中访问这些属性:
DirectoryEntry baseEntry = new DirectoryEntry(rootPath, null, null, AuthenticationTypes.FastBind); DirectorySearcher groupSearcher = new DirectorySearcher(baseEntry); groupSearcher.Filter = "(objectClass=group)"; groupSearcher.PropertiesToLoad.Add("distinguishedName"); groupSearcher.PropertiesToLoad.Add("description"); foreach (SearchResult groupSr in groupSearcher.FindAll()) { if(groupSr.Properties["description"] != null && groupSr.Properties["description"].Count > 0) { string description = groupSr.Properties["description"][0].ToString(); } ..... }
您无法限制实际DirectoryEntry
上的属性 – 因此,如果您获取每个SearchResult
的目录条目 – 您可以完全访问所有内容。 但重点是您可以定义所需的属性,并直接在SearchResult
上访问这些属性, 而无需返回到底层的DirectoryEntry