如何使用C#确定用户是否属于特定的AD用户组,而无需枚举用户的所有组?能否使用单个LDAP查询或搜索来完成此操作?
如何使用C#确定用户是否属于特定的AD用户组,而无需枚举用户的所有组?能否使用单个LDAP查询或搜索来完成此操作?
如果您正在检查当前用户并且知道您想要的组的名称,那么您不需要枚举所有组。以下是VB.NET的示例代码:
Public Function IsInGroup(ByVal GroupName As String) As Boolean
Dim MyIdentity As System.Security.Principal.WindowsIdentity = System.Security.Principal.WindowsIdentity.GetCurrent()
Dim MyPrincipal As System.Security.Principal.WindowsPrincipal = New System.Security.Principal.WindowsPrincipal(MyIdentity)
Return MyPrincipal.IsInRole(GroupName)
End Function
同样地,在C#中:
private static bool IsInGroup(string GroupName)
{
System.Security.Principal.WindowsIdentity MyIdentity = System.Security.Principal.WindowsIdentity.GetCurrent();
System.Security.Principal.WindowsPrincipal MyPrincipal = new System.Security.Principal.WindowsPrincipal(MyIdentity);
return MyPrincipal.IsInRole(GroupName);
}
如果你需要调整以检查不同用户的成员资格或其他内容,可以在WindowsIdentity文档中找到更多示例。