如何获取包括嵌套角色在内的所有用户角色?

5
我有一个使用AD模块连接到Active Directory的Sitecore站点。假设我们在Sitecore中定义了一个名为“内容作者”的角色。内容作者可以包含单个用户帐户“jsmith”,也可以包含整个AD组“东北经理”。我需要获取所有直接或间接(通过AD组)属于“内容作者”角色的用户列表。目前,我的代码似乎只返回直接属于“内容作者”角色的用户。以下是我的代码:
string[] _roleUserNames = System.Web.Security.Roles.GetUsersInRole("Content Authors");

我原以为这段代码会返回那个角色中每个人的“有效”列表。但它似乎只返回直接在该角色中的人。有没有人知道是否有其他方法可以获取角色中的所有人?
2个回答

8

我发现这是Sitecore特有的问题,因为Sitecore允许角色中包含其他角色,并且该功能是建立在MS ASP.NET Membership基础上的。要获取包括“间接”用户在内的角色中的所有用户,您应该使用以下代码:

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

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

1
我知道这已经很老了,但我遇到了同样的问题,上面的解决方案对我们没有用。在Active Directory中找不到间接用户,只能找到Sitecore角色中的间接用户。
进一步调查AD模块角色提供程序似乎表明存在间接角色的代码,但是调用它的方法似乎无法正常工作。dotPeek向我展示了一个参数的显式设置为“false”,该参数将触发搜索用户的间接角色,并且未从设置中读取。
我们需要反编译AD 1.1代码,然后修复其中的部分才能使其正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接