我使用此代码来获取当前用户的组。但是我想手动给用户,然后得到他的组。我怎样才能做到这一点?using System.Security.Principal;public ArrayList Groups(){ ArrayList groups = new ArrayList(); foreach (IdentityReference group in System.Web.HttpContext.Current.Request.LogonUserIdentity.Groups) { groups.Add(group.Translate(typeof(NTAccount)).ToString()); } return groups;}
3 回答
慕仙森
TA贡献1827条经验 获得超7个赞
GetAuthorizationGroups()找不到嵌套的组。要真正获得给定用户所属的所有组(包括嵌套组),请尝试以下操作:
using System.Security.Principal
private List<string> GetGroups(string userName)
{
List<string> result = new List<string>();
WindowsIdentity wi = new WindowsIdentity(userName);
foreach (IdentityReference group in wi.Groups)
{
try
{
result.Add(group.Translate(typeof(NTAccount)).ToString());
}
catch (Exception ex) { }
}
result.Sort();
return result;
}
我try/catch之所以使用,是因为在一个非常大的广告中,我在200个组中有2个例外,因为有些SID不再可用。(该Translate()调用执行SID->名称转换。)
- 3 回答
- 0 关注
- 751 浏览
添加回答
举报
0/150
提交
取消