如何让所有用户都参与角色中的角色?

时间:2012-03-19 17:37:10

标签: asp.net-membership sitecore sitecore6 role-based

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

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

我假设这段代码会返回该角色中每个人的“有效”列表。它似乎只会让那些直接担任这个角色的人回归。有没有人知道是否还有其他方法让每个人都参与其中?

2 个答案:

答案 0 :(得分:7)

我发现这是Sitecore的一个特定问题,因为Sitecore允许Roles in Roles,并且该功能是建立在MS ASP.NET Membership之上的。要让所有用户都参与包括“间接”用户在内的角色,您应该使用以下代码:

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

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

答案 1 :(得分:0)

我知道这已经过时了,但我遇到了同样的问题而上述解决方案对我们没有用。找不到Active Directory中的间接用户,只有Sitecore角色中的间接用户。

对AD模块角色提供程序的进一步调查似乎表明存在间接角色的代码,但是到达它的调用似乎不起作用。 dotPeek向我展示了一个参数的明确设置'false',该参数会触发间接角色搜索用户,而不是从设置中读取。

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