如何清除Sitecore中的安全角色?

sid*_*pur 5 c# roles sitecore

我正在尝试从项目中删除特定角色.现在我分配了3个角色."Everyone","sitecore\author","sitecore\developer".如何删除"Everyone"和"sitecore\author".到目前为止,我已经尝试过这个但是它没有用.

public static void ClearSecurityRoles(this Item item)
{
    var accessrules = item.Security.GetAccessRules();
    var role = Sitecore.Security.Accounts.Role.FromName("Everyone");
    accessrules.Helper.RemoveExactMatches(role,AccessRight.Any,PropagationType.Any);
    item.SaveSecurityAccessRules(accessrules);
}

public static void SaveSecurityAccessRules(this Item item, AccessRuleCollection accessRules)
{
    item.Editing.BeginEdit();
    item.Security.SetAccessRules(accessRules);
    item.Editing.EndEdit();
}
Run Code Online (Sandbox Code Playgroud)

当我使用accessrules.clear()它删除所有角色,但我希望能够删除只有两个.我怎么做?

小智 1

你可以这样做:

Role role = Role.FromName("Everyone");
AccessRuleCollection accessRules = item.Security.GetAccessRules();

foreach (var accessRight in _accessRights)
{
   AccessRight right = AccessRight.FromName(accessRight.Value);
   accessRules.Helper.RemoveExactMatches(role, right, PropagationType.Any);
}
item.Security.SetAccessRules(accessRules);
Run Code Online (Sandbox Code Playgroud)