我想检查用户是否是 c# 中组的成员。该应用程序在 windows mobile 6.1 上运行,我必须将 ldap 函数与[DllImport]
.
有人有这个样品吗?连接到 ldap 服务器并检查用户/密码是否有效。
我想检查用户是否是 c# 中组的成员。该应用程序在 windows mobile 6.1 上运行,我必须将 ldap 函数与[DllImport]
.
有人有这个样品吗?连接到 ldap 服务器并检查用户/密码是否有效。
为什么不使用框架中已有的内容。
看看这个:WindowsPrincipal.IsInRole 方法(字符串)
WindowsIdentity identity = WindowsIdentity.GetCurrent();
WindowsPrincipal principal = new WindowsPrincipal(identity);
principal.IsInRole("role name");
或者
如果你使用 C#/VB.Net 和 System.DirectoryServices,这个片段应该可以解决问题:
DirectoryEntry rootEntry = new DirectoryEntry("LDAP://dc=yourcompany,dc=com");
DirectorySearcher srch = new DirectorySearcher(rootEntry);
srch.SearchScope = SearchScope.Subtree;
srch.Filter = "(&(objectClass=user)(sAMAccountName=yourusername)(memberof=CN=yourgroup,OU=yourOU,DC=yourcompany,DC=com))";
SearchResultCollection res = srch.FindAll();
if(res == null || res.Count <= 0)
Console.WriteLine("This user is NOT a member of this group");
else
Console.WriteLine("This user is INDEED a member of this group");
注意:这只会测试直接组成员身份,不会测试您域中所谓的“主要组”(通常是“cn=Users”)的成员身份。它不处理嵌套的成员资格,例如,用户 A 是组 A 的成员,而组 A 是组 B 的成员——用户 A 确实也是组 B 的成员这一事实并没有在这里得到反映。