Как я могу получить все роли (группы), пользователь является членом?

Со вчерашнего дня все снова работает нормально, даже если используется постоянный токен доступа к странице. Похоже, что fb решил внутреннюю ошибку. Однако остается вопрос, можно ли вообще использовать токен доступа к странице или это просто ошибка.

24
задан joshperry 2 May 2017 в 02:56
поделиться

2 ответа

WindowsPrincipal.IsInRole просто проверяет, является ли пользователь членом группы с таким именем; Группа Windows - это роль . Вы можете получить список групп, в которые входит пользователь, из свойства WindowsIdentity.Groups .

Вы можете получить WindowsIdentity из вашего WindowsPrincipal :

WindowsIdentity identity = WindowsPrincipal.Identity as WindowsIdentity;

или вы можете получить его из фабричного метода в WindowsIdentity:

WindowsIdentity identity = WindowsIdentity.GetCurrent();

WindowsIdenity.Groups - это коллекция IdentityReference , которая просто дает вам идентификатор безопасности группы. Если вам нужны имена групп, вам нужно будет перевести IdentityReference в NTAccount и получить значение:

var groupNames = from id in identity.Groups
                 select id.Translate(typeof(NTAccount)).Value;
39
ответ дан 28 November 2019 в 23:04
поделиться

РЕДАКТИРОВАТЬ: Джош бил меня в это! :)

Попробуйте это

using System;
using System.Security.Principal;

namespace ConsoleApplication5
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            var identity = WindowsIdentity.GetCurrent();

            foreach (var groupId in identity.Groups)
            {
                var group = groupId.Translate(typeof (NTAccount));
                Console.WriteLine(group);
            }
        }
    }
}
8
ответ дан 28 November 2019 в 23:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: