Как получить C #, если Else Logic исключить членов группы безопасности AD? - PullRequest
0 голосов
/ 30 октября 2019

У меня есть следующий код для получения групп безопасности 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.

1 Ответ

0 голосов
/ 30 октября 2019

Я не знаю почему, но сейчас это работает. Я использую тот же код, без изменений ...

if (groupNames.Contains("Admins") || groupNames.Contains("Mgrs"))
    {
        return;
    }
    else
    {
        Response.Redirect("~/AccessDenied.aspx");
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...