当前位置:  开发笔记 > 编程语言 > 正文

Sitecore:如何根据条件显示或隐藏某些页面?

如何解决《Sitecore:如何根据条件显示或隐藏某些页面?》经验,为你挑选了1个好方法。

我正在使用Sitecore 7.2。我想根据用户的情况显示或隐藏某些页面。

例如,仅对个人资料字段名称为country ='USA'的用户显示/授予对页面A的读取访问权限,就像我们对Sitecore项目中的单个组件所做的那样。

有没有办法在Sitecore中做到这一点?



1> Ian Graham..:

听起来规则引擎可能对您来说是一个不错的选择。您可以将“规则”字段添加到页面模板以驱动逻辑。

检查配置文件字段的规则条件已经存在于Sitecore中,您只需要创建自己的自定义逻辑即可拒绝对该页面的访问

要评估页面上的规则,您可以将一些代码放入管道处理器中,以检查适用于每个页面的规则。这是评估规则的示例。

 public bool EvaluateRule(string fieldName, Item item)
 {
        var ruleContext = new RuleContext();
        foreach (Rule rule in RuleFactory.GetRules(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();
    }
}

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有