У меня есть следующий код для получения групп безопасности AD текущего пользователя.
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
PrincipalSearchResult<Principal> groups = UserPrincipal.FindByIdentity(ctx, User.Identity.Name).GetAuthorizationGroups();
IEnumerable<string> groupNames = groups.Select(x => x.Name);
Я проверил, и все группы безопасности пользователя содержатся в groupNames. Однако следующая логика не работает должным образом - она блокирует «Админов» и «Mgrs», а также всех остальных:
if (!(groupNames.Contains("Admins") || groupNames.Contains("Mgrs"))) { Response.Redirect("~/AccessDenied.aspx"); }
Я также попробовал следующее, и он тоже не работает- вместо этого он позволяет всем просматривать страницу:
if (groupNames.Contains("Admins") || groupNames.Contains("Mgrs"))
{
return;
}
else
{
Response.Redirect("~/AccessDenied.aspx");
}
Мой синтаксис или логика неверны? Мне нужно, чтобы все пользователи в группах безопасности «Администраторы» или «Mgrs» имели доступ к странице, а все остальные пользователи должны быть перенаправлены на AccessDenied.aspx.
Это приложение веб-формы asp.net, использующее визуальныестудия 2019.