【问题标题】:How to get all users in a role including roles in roles?如何让所有用户成为一个角色,包括角色中的角色?
【发布时间】:2012-04-04 05:25:02
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-21
        • 2015-08-01
        • 2013-03-31
        • 2013-04-06
        • 1970-01-01
        • 2020-03-20
        • 2015-08-24
        • 2018-03-11
        相关资源
        最近更新 更多