Как получить всех пользователей в роли, включая роли в ролях?

У меня есть сайт Sitecore, который использует модуль AD для подключения к Active Directory. Допустим, у нас есть роль, определенная в Sitecore, которая называется «Авторы контента». Авторы контента могут содержать отдельные учетные записи пользователей — «jsmith» — или целую группу AD — «Northeast Managers». Мне нужно получить список всех пользователей, которые находятся в роли «Авторы контента», прямо или косвенно (через группу AD). Прямо сейчас мой код, похоже, возвращает только пользователей, которые являются непосредственными членами роли «Авторы контента». Вот мой код:

string[] _roleUserNames = System.Web.Security.Roles.GetUsersInRole("Content Authors");

Я предполагал, что этот код вернет «эффективный» список всех, кто находится в этой роли. Кажется, возвращаются только люди, которые находятся непосредственно в этой роли. Кто-нибудь знает, есть ли какой-то другой способ получить всех в роли?


person Corey Burnett    schedule 19.03.2012    source источник


Ответы (2)


Я понял, что это конкретная проблема для Sitecore, поскольку Sitecore позволяет использовать роли в ролях, и эта функциональность построена на основе членства в MS ASP.NET. Чтобы получить роль всех пользователей, включая «непрямых», вы должны использовать следующий код:

IEnumerable<User> _roleUsers = Sitecore.Security.Accounts.RolesInRolesManager.GetUsersInRole(Role.FromName("Content Authors"), true);

Это даст вам всех пользователей, включая косвенных пользователей.

person Corey Burnett    schedule 19.03.2012

Я знаю, что это старо, но я столкнулся с той же проблемой, и указанное выше решение нам не помогло. Косвенные пользователи в Active Directory не найдены, только косвенные пользователи в ролях Sitecore.

Дальнейшее изучение поставщика роли модуля AD, по-видимому, указывает на наличие кода для непрямых ролей, но обращение к нему, по-видимому, не работает. dotPeek показал мне, что существует явное значение «false» для параметра, который запускает непрямые роли, ищущие пользователей, и не считывается из этого параметра.

Нам нужно было декомпилировать код AD 1.1, а затем исправить эту часть, чтобы она заработала.

person Jay S    schedule 06.11.2013