有验证登录的方案用户属于web.config中提到的AD组。下面使用的代码工作正常,但在循环时需要花费大量时间。 (某些情况用户在AD中有100+组的关系)字符串。
有没有办法通过直接方法实现这一目标,以获得更好的性能。
注意:我已尝试过Group obj的Contains()方法,但无法将字符串作为输入传递。
allowedRoles = "Role1, Role2"; //Read from web.config
string[] allowedRolesList = allowedRoles.Split(',');
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, UserDomain);
UserPrincipal user = UserPrincipal.FindByIdentity(ctx,IdentityType.SamAccountName,SLID);
if (user != null)
{
var groups = user.GetAuthorizationGroups();
foreach (string allowedrole in allowedRolesList)
{
foreach (GroupPrincipal group in groups)
{
if (group.Name.ToLower() == allowedrole.ToLower())
{
return true;
}
}
}
}