首页 文章

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

提问于
浏览
4

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

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

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

2 回答

  • 0

    我知道这是旧的,但我遇到了同样的问题,上述解决方案对我们没有用 . 未找到Active Directory中的间接用户,只有Sitecore角色中的间接用户 .

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

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

  • 7

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

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

    这将为您提供包括间接用户在内的所有用户 .

相关问题