找出用户属于哪些组

时间:2010-09-08 23:10:24

标签: c# asp.net windows login

我有一个我刚刚创建的Windows用户帐户以XYZ为例。

此XYZ属于用户组和我在计算机管理中创建的自定义组 - >本地用户和组。

因此,在属性中,我看到用户属于2组。

现在我想获得这些组并显示它们。有什么建议吗?

我已经这样做但这不对,因为它给了我SQL的角色(我认为)

这就是我所做的:

登录并模仿后我调用函数

getUserGroups();

private void getUserGroups()
{
    // collect the user domain and identity
    string[] arr =
        System.Web.HttpContext.Current.Request.
        LogonUserIdentity.Name.Split('\\');

    // update the display to show
    // the captured domain and user
    if (arr.Length > 0)
    {
        new GUIUtility().LogMessageToFile("User Name" + arr[0].ToString());
        new GUIUtility().LogMessageToFile("User Domain" + arr[1].ToString());
    }

    // create an arraylist and populate
    // it with the list of groups that
    // the current user belongs to
    ArrayList al = new ArrayList();
    al = GetGroups();

    // check to see if the user belongs
    // to a specific group and create
    // a list of all of the user's groups
    foreach (string s in al)
    {
        // add this one to the list
        new GUIUtility().LogMessageToFile("Group" + s);
        // check to see if the user
        // belongs to a specific group

        //if (s == "BXSWLT\\SomeCustomGroup")
        //{
        //    // change the label to show
        //    // there was a match
        //    lblMemberOfGroup.Text = "YES";
        //}
    }
}


public ArrayList GetGroups()
{
    ArrayList groups = new ArrayList();
    foreach (System.Security.Principal.IdentityReference group in
    System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups)
    {
        groups.Add(group.Translate(typeof
        (System.Security.Principal.NTAccount)).ToString());
    }
    return groups;
}

我得到的结果是:

9/8/2010 5:57:22 PM: User Name  NT AUTHORITY.
9/8/2010 5:57:22 PM: User Domain  IUSR.
9/8/2010 5:57:22 PM: Group  Everyone.
9/8/2010 5:57:22 PM: Group  BUILTIN\Users.
9/8/2010 5:57:22 PM: Group  NT AUTHORITY\Authenticated Users.
9/8/2010 5:57:22 PM: Group  NT AUTHORITY\This Organization.
9/8/2010 5:57:22 PM: Group  LOCAL.

1 个答案:

答案 0 :(得分:1)

你试过

吗?
HttpContext.Current.User.Identity

而不是

HttpContext.Current.Request.LogonUserIdentity