在string []中返回用户所属的所有Active Directory组的列表

use*_*493 6 c# active-directory c#-4.0 asp.net-mvc-3 asp.net-mvc-4

我需要返回用户所属的所有Active Directory组,但是在string []中,所以我可以使用Generic Principal中的结果.

我不确定是否要投出结果?请帮忙!

string[] roles = new string[] {  
helper.GetActiveDirectoryGroups(User.Identity.Name) };

GenericPrincipal principal = new GenericPrincipal(identity,roles);

 public string[] GetActiveDirectoryGroups(string userName)
    {
          //code here

    }
Run Code Online (Sandbox Code Playgroud)

Dav*_*ach 11

这应该可以解决问题.

using System.DirectoryServices.AccountManagement;

public static string[] GetGroups(string username)
{
    string[] output = null;

    using (var ctx = new PrincipalContext(ContextType.Domain))
    using (var user = UserPrincipal.FindByIdentity(ctx, username))
    {
        if (user != null)
        {
            output = user.GetGroups() //this returns a collection of principal objects
                .Select(x => x.SamAccountName) // select the name.  you may change this to choose the display name or whatever you want
                .ToArray(); // convert to string array
        }
    }

    return output;
}
Run Code Online (Sandbox Code Playgroud)