Как найти только одну группу, в которую вошел пользователь

#c# #asp.net

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

Некоторые из отображаемых групп:

 BUILINAdministrators
Everyone
IIS_Usrs
tmgIT Members
tmgDomain Users
 

Как мне проверить, входит ли пользователь tmgIT 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);
        }
 

Ответ №1:

Я думаю, что вы хотите этого:

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

Комментарии:

1. внутри цикла for или мне это не нужно?

2. вам не нужен цикл, логика говорит, что если количество групп равно 1, А имя группы равно tmgIT Members ….

3. я забыл .ToString()

4. Спасибо за исправление. Код не работает, потому что, когда я использовал цикл for, одно из всплывающих окон было tmgIT Members , но с приведенной выше логикой это не работает.

5. if (groups.Count == 1 amp;amp; groups[0].ToString() == @"tmgIT Members") { MessageBox.Show("YES"); } else { MessageBox.Show("NO"); }

Ответ №2:

Пожалуйста, попробуйте следующее:

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

}