我有以下代码,显示用户登录的每个组:
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);
}
答案 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)
{
}