Как проверить, является ли пользователь членом группы - PullRequest
0 голосов
/ 07 ноября 2018

Моя цель - проверить, является ли пользователь членом определенной группы активных каталогов.

В .net mvc я использовал этот код в моем сервисе

HttpContext.Current.Request.LogonUserIdentity.Groups
                    .Any(x => x.Translate(typeof(NTAccount)).Value == "some role"

и это сработало хорошо. В .net core mvc 2.1.2 я передаю IHttpContextAccessor в конструктор службы и пытаюсь использовать следующее

_httpAccessor.HttpContext.User.Identity.LogonUserIdentity.Groups

но есть проблема, потому что Identity не содержит LogonUserIdentity. Я пытался найти какое-либо решение, но мне не удалось, как я могу получить список групп пользователей или проверить, является ли пользователь членом определенной группы?

1 Ответ

0 голосов
/ 08 ноября 2018

Кроме использования встроенной функции, которая проверяет разрешение по «ролям», если вы хотите проверить по определенной группе AD, вы также можете использовать следующие коды:

 public static class Security
{
    public static bool IsInGroup(this ClaimsPrincipal User, string GroupName)
    {
        var groups = new List<string>();

        var wi = (WindowsIdentity)User.Identity;
        if (wi.Groups != null)
        {
            foreach (var group in wi.Groups)
            {
                try
                {
                    groups.Add(group.Translate(typeof(NTAccount)).ToString());
                }
                catch (Exception)
                {
                    // ignored
                }
            }
            return groups.Contains(GroupName);
        }
        return false;
    }
}

И используя как:

 if (User.IsInGroup("GroupName"))
 {

 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...