2010-06-11 17 views
11

Bir kullanıcının tüm kullanıcı gruplarını numaralandırmak zorunda kalmadan C# kullanarak belirli bir AD kullanıcı grubuna ait olup olmadığını belirlemenin en iyi yolu nedir. Bu, tek bir LDAP sorgusu veya araması kullanılarak yapılabilir mi?Bir kullanıcının belirli bir AD Grubuna ait olup olmadığını belirleyin. Net

+0

olası kopyası [Kullanıcının C# + Asp.net içindeki Active Directory grubunun bir parçası olup olmadığına bakın] (http://stackoverflow.com/questions/2188954/see-if-user-is-part-of-active- dizin-grup-in-c-asp-net) –

+0

olası bir kopyası [Kullanıcının bir grubun üyesi olup olmadığını sınamak için LDAP sorgusu nasıl yazılır?] (http://stackoverflow.com/questions/1032351/how-to- yazma-ldap-sorgu-test-if-kullanıcı-üyesi-of-a-grubu) –

cevap

30

, sen Bütün gruplar arasında numaralandırmaya gerek yok.

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 

Benzer C#: Burada VB.NET örnek kod farklı bir kullanıcının üyeliğini ya da her neyse kontrol etmek çimdik gerekirse

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); 
} 

fazla örnek, WindowsIdentity documentation bulunabilir.

+2

Bu bana çok yardımcı oldu. Farklı bir kullanıcının üyeliğini kontrol etmeniz gerekiyorsa şunu yapın: var userPrincipal = new WindowsPrincipal (yeni WindowsIdentity (kullanıcı adı)); –

+1

Bu çalışır, ancak sadece bazıları için tüm gruplar için bilgi almayacaksınız. Kullanıcının üyesi olduğu grupların tam listesini almak için şu cevabı kontrol edin: (http://stackoverflow.com/questions/5252108/query-from-ldap-for-user-groups) – Roboblob

+0

İlginç. Teşekkürler, @Roboblob! – ewall

İlgili konular