4

我有一个使用 AD 模块连接到 Active Directory 的 Sitecore 站点。假设我们在 Sitecore 中定义了一个名为“内容作者”的角色。内容作者可能包含个人用户帐户 - “jsmith” - 或者它可能包含整个 AD 组 - “Northeast Managers”。我需要直接或间接(通过 AD 组)获取具有“内容作者”角色的所有用户的列表。现在我的代码似乎只返回直接属于“内容作者”角色的用户。这是我的代码:

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

我假设此代码将返回担任该角色的每个人的“有效”列表。它似乎只返回直接担任该角色的人。有谁知道是否有其他方法可以让每个人都担任角色?

4

2 回答 2

7

我发现这是 Sitecore 的一个特定问题,因为 Sitecore 允许角色中的角色,并且该功能建立在 MS ASP.NET 成员资格的基础之上。要让包括“间接”用户在内的所有用户担任角色,您应该使用以下代码:

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

这将为您提供所有用户,包括间接用户。

于 2012-03-19T18:45:13.530 回答
1

我知道这很旧,但我遇到了同样的问题,上述解决方案对我们不起作用。未找到 Active Directory 中的间接用户,仅找到 Sitecore 角色中的间接用户。

对 AD 模块角色提供程序的进一步调查似乎表明存在用于间接角色的代码,但对它的调用似乎不起作用。dotPeek 向我展示了一个参数的显式设置为“false”,该参数会触发搜索用户的间接角色,并且没有从设置中读取。

我们需要反编译 AD 1.1 代码,然后修复该部分以使其正常工作。

于 2013-11-06T19:42:39.383 回答