2012-03-19 185 views
3

我有一个使用AD模块连接到活动目录的Sitecore站点。假设我们在Sitecore中定义了一个名为“内容作者”的角色。内容作者可能包含个人用户帐户 - “jsmith” - 或者可能包含整个广告组 - “东北部经理”。我需要直接或间接(通过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代码,然后修复该部分以使其工作。

相关问题