Со вчерашнего дня все снова работает нормально, даже если используется постоянный токен доступа к странице. Похоже, что fb решил внутреннюю ошибку. Однако остается вопрос, можно ли вообще использовать токен доступа к странице или это просто ошибка.
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;
РЕДАКТИРОВАТЬ: Джош бил меня в это! :)
Попробуйте это
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);
}
}
}
}