如何查找用户登录时的一个组

本文关键字:一个 用户 何查找 查找 登录 | 更新日期: 2023-09-27 18:10:39

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

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

如何查找用户登录时的一个组

我想你想要的是:

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

请尝试以下操作:

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