#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)
{
}