如何在Sitecore中保护CM网站?

时间:2016-04-28 14:45:39

标签: sitecore sitecore8

我试图锁定CM(主站点)网站​​。用户必须登录才能查看该站点。

以下配置会添加到sitecore.config中。不幸的是,下面的实现仅适用于主页(例如/)。 当一个匿名用户进入/ hello-world时,他们会看到一个" white"没有任何内容的页面。它不会将它们引导到登录页面。

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:set="http://www.sitecore.net/xmlconfig/set/">
  <sitecore>
    <sites>
      <site name="website" 
              set:requireLogin="true" 
              set:domain="sitecore" 
              set:loginPage="/sitecore/login" 
              set:targetHostName="master.website.com" 
              set:scheme="http" />
    </sites>
  </sitecore>
</configuration>

访问主页带我去 login page 但是,如果我手动输入内部页面URL,我会得到以下内容: white page

3 个答案:

答案 0 :(得分:0)

要使其正常工作,只应为“网站”配置节点更改2个设置 - requireLoginloginPage。所以你一定要正确设置它。 我在过去遇到了类似的“空白页面”问题,它与ItemNotFoundUrl设置的一些配置错误有关。如果“hello-world”页面不存在,也可能是你的情况。

答案 1 :(得分:0)

请你试试这个:

<site name="website" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content" startItem="/hello-world" database="master" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false" requireLogin="true" loginPage="/sitecore/login/Default.aspx" />

<强>亮点:

  1. startItem :设置为hello-world页面(假设这是主页项目)
  2. 数据库:设置为master(取决于您的测试用例,您也可以使用 web db)
  3. loginPage :重定向到Sitecore登录页面
  4. requireLogin :强制登录,设置为TRUE

答案 2 :(得分:0)

经过进一步调查,并与sitecore社区联系后,我发现sitecore 8 update 5(mvc)中存在错误。安全检查无法正常工作。

这是FIX: 1.添加一个继承自SecurityCheck的管道。

public class SecurityCheck : Sitecore.Pipelines.RenderLayout.SecurityCheck
{
            private RequestBeginArgs originalArgs;

            public virtual void Process(RequestBeginArgs args)
            {
                originalArgs = args;
                Process(new RenderLayoutArgs((System.Web.UI.Page)new Sitecore.Web.UI.HtmlControls.Page(), (Item)null));
            }

            protected override bool HasAccess()
            {
                SiteContext site = Context.Site;
                if (site != null && site.RequireLogin && (!Context.User.IsAuthenticated && !this.IsLoginPageRequest()))
                {
                    originalArgs.AbortPipeline();
                    return false;
                }
                if (site == null || site.DisplayMode == DisplayMode.Normal || (Context.User.IsAuthenticated || !(PreviewManager.GetShellUser() == string.Empty)) || this.IsLoginPageRequest())
                    return true;
                originalArgs.AbortPipeline();
                return false;
            }
}

2。添加此处理器作为第一个处理器

<mvc.requestBegin>
    <!-- security check for site -->
    <processor type="Namespace.SecurityCheck, Assembly"/>
  </mvc.requestBegin>