我正在使用Sitecore 7.2。我想根据用户的条件显示或隐藏某些页面。Sitecore:如何根据条件显示或隐藏某些页面?
例如,显示/授予了读访问网页A只有其配置文件字段名国家=“USA”就像我们在Sitecore的项目各个组件做的那些用户。
有没有办法在Sitecore的做到这一点?
我正在使用Sitecore 7.2。我想根据用户的条件显示或隐藏某些页面。Sitecore:如何根据条件显示或隐藏某些页面?
例如,显示/授予了读访问网页A只有其配置文件字段名国家=“USA”就像我们在Sitecore的项目各个组件做的那些用户。
有没有办法在Sitecore的做到这一点?
为什么不使用Sitecore的支持基于角色的权限?
因此,例如,每个不同的国家,你有内部Sitecore的各自的作用和使用来定义权限的项目。
下一步是,如果配置文件字段国被更新,更新分配给用户的角色。
这听起来像规则引擎可能是一个不错的选择。您可以将规则字段添加到您的页面模板以驱动逻辑。
规则条件检查的个人资料栏已经内Sitecore的存在,你只需要创建自己的自定义逻辑来拒绝访问页面
要在网页上的评估规则您可以将一些代码放入流水线处理器以检查适用于每个页面的规则。以下是评估规则的示例。
public bool EvaluateRule(string fieldName, Item item)
{
var ruleContext = new RuleContext();
foreach (Rule<RuleContext> rule in RuleFactory.GetRules<RuleContext>(new[] { item }, fieldName).Rules)
{
if (rule.Condition != null)
{
var stack = new RuleStack();
rule.Condition.Evaluate(ruleContext, stack);
if (ruleContext.IsAborted)
{
continue;
}
if ((stack.Count != 0) && ((bool)stack.Pop()))
{
return true;
}
}
}
return false;
}
你可以使用此代码结合本否认页面访问
public class RulesProcessor : HttpRequestProcessor
{
public override void Process(HttpRequestArgs args)
{
Assert.ArgumentNotNull((object)args, "args");
if (!UserCanAccess())
{
Sitecore.Context.Item=null;
args.PermissionDenied = true;
}
}
private bool UserCanAccess()
{
EvaluateRulesLogic();
}
}
有些国家正号和条件可能并不总是涉及到乡间田野它可能与其他的个人资料未来的领域也是如此。所以这是不可能的 –