2012-03-19 237 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代碼,然後修復該部分以使其工作。

相關問題