为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Active Directory中获取用户组?(C#,asp.net)

如何在Active Directory中获取用户组?(C#,asp.net)

aluckdog 2019-12-10 10:49:25
我使用此代码来获取当前用户的组。但是我想手动给用户,然后得到他的组。我怎样才能做到这一点?using System.Security.Principal;public ArrayList Groups(){    ArrayList groups = new ArrayList();    foreach (IdentityReference group in System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups)    {        groups.Add(group.Translate(typeof(NTAccount)).ToString());    }    return groups;}
查看完整描述

3 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

GetAuthorizationGroups()找不到嵌套的组。要真正获得给定用户所属的所有组(包括嵌套组),请尝试以下操作:


using System.Security.Principal


private List<string> GetGroups(string userName)

{

    List<string> result = new List<string>();

    WindowsIdentity wi = new WindowsIdentity(userName);


    foreach (IdentityReference group in wi.Groups)

    {

        try

        {

            result.Add(group.Translate(typeof(NTAccount)).ToString());

        }

        catch (Exception ex) { }

    }

    result.Sort();

    return result;

}

我try/catch之所以使用,是因为在一个非常大的广告中,我在200个组中有2个例外,因为有些SID不再可用。(该Translate()调用执行SID->名称转换。)


查看完整回答
反对 回复 2019-12-10
  • 3 回答
  • 0 关注
  • 716 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信