2012-03-19 13 views
3

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

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

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

ответ

6

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

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

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

0

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

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

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