【问题标题】:How to clear security role in Sitecore?如何清除 Sitecore 中的安全角色?
【发布时间】:2015-06-27 20:03:15
【问题描述】:

我正在尝试从项目中删除特定角色。现在我分配了 3 个角色。 “所有人”、“站点核心\作者”、“站点核心\开发者”。如何删除“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();
}

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

【问题讨论】:

  • 你能在项目上发布安全字段的原始值吗?
  • Everyone 角色是一个虚拟角色。 Sitecore 提供了一个全局的 Everyone 角色,该角色用于为所有用户分配和解决安全问题,这可能就是您无法删除它的原因,因为它是一个虚拟角色
  • 而这些角色是专门应用于项目的?没有被继承?
  • 终于可以解决了。我通过将 AccesRight.Any 更改为 AccessRight.ItemRead 来修复它,并且还能够删除 Everyone 角色。
  • @siddhipur 您应该在上面添加您的评论作为问题答案。

标签: c# sitecore roles


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-23
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    相关资源
    最近更新 更多