Sitecore 安全 - 组合角色

Sitecore security - combining roles

有没有办法合并 Sitecore 项目的访问权限?

例如,我有一个页面,我想将其锁定为属于两个不同角色的用户,而不仅仅是一个角色的用户,并且应该拒绝只有一个角色的用户访问。

我知道您可以在角色中设置角色,但想知道是否有更简单的方法来实现这一点?

我正在使用 Sitecore 7.2。

如果你想在代码中检查这个,你可以使用

轻松地做到这一点
var user = AuthenticationManager.GetActiveUser();
return user.IsInRole("Role1") && user.IsInRole("Role2") ? "Granted":"Denied";

但是,如果您尝试在 Sitecore Security 中对某个项目实现此目的,则会分配这 2 个角色的 AND。例如:如果我允许访问 Role1 中的项目但拒绝 Role2 中的项目,则具有角色 1 和 2 的用户将 his/her 访问被拒绝。

您可以通过 Security Editor 实现它的一种方法是利用 Sitecore 的 Roles in Roles 功能。

本质上,您需要在 Role Manager 中创建一个新角色,其中将包含角色 A 和角色 B 这两个角色。Select 您在 Role Manager 中的新角色和单击 Member Of 按钮。在模式中单击添加和 select 这个新角色需要包含的两个角色。

Security Editor select 新角色中,将读取、写入、创建等权限分配给所需的 Items

现在,当用户访问这些 Items 时,他们必须先拥有角色 A 和角色 B,然后才能获得访问权限 - 他们不需要为其帐户分配新角色

如果您要管理大量角色以及这些角色的组合,手动创建这些组合将非常耗时。

解决此问题的最简单方法是定义一个具有适当访问权限的新角色,然后手动或通过脚本将相关用户分配给该角色。这使您的访问权限保持透明。您可以通过编码来解决这个问题,但最终可能会给管理员带来噩梦,几乎不可能看到哪些角色和用户可以访问哪些项目。例如。当查看其中一个角色,或者查看具有一个或两个角色的用户时,您希望在访问查看器中看到什么?以编程方式分配访问权限与以编程方式评估访问权限之间存在很大差异。