【发布时间】: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 您应该在上面添加您的评论作为问题答案。