如何找到用户登录的一个组

时间:2014-06-27 18:27:39

标签: c# asp.net

我有以下代码,显示用户登录的每个组:

protected void Page_Load(object sender, EventArgs e)
    {
        Groups();
    }

    public ArrayList Groups()
    {
        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());

        }
        for (int i = 0; i < groups.Count; i++)
        {
            MessageBox.Show(groups[i].ToString() + "");
        }


        return groups;
    }

显示的一些群组是:

BUILIN\Administrators
Everyone
IIS_Usrs
tmg\IT Members
tmg\Domain Users

如何检查用户是否仅在tmg\IT Members群组?

我尝试了以下但是失败了,因为有些小组没有\

for (int i = 0; i < groups.Count; i++)
        {
            MessageBox.Show(groups[i].ToString() + "");
            string t = groups[i].ToString().Split('\\')[0];
            string y = groups[i].ToString().Split('\\')[1];
            MessageBox.Show(t);
            MessageBox.Show(y);
        }

2 个答案:

答案 0 :(得分:1)

我认为你想要的是:

for (int i = 0; i < groups.Count; i++){
  if ( groups[i].ToString() == @"tmg\IT Members" ) 
  {
     ...    // true...
  }
}

答案 1 :(得分:0)

请尝试以下操作:

if (System.Web.HttpContext.Current.Request.LogonUserIdentity?.Groups?.Where(s => s.Translate(typeof(NTAccount)).ToString() == "tmg\\IT Members").ToList().Count == 1)
{

}