2016-04-28 69 views
0

我试图锁定CM(主)站点。用户将不得不登录才能查看该网站。如何保护Sitecore中的CM网站?

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

<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

+0

你拒绝读取访问主页和他所有的chiidren外联网/匿名用户? –

+0

不需要。如果我这样做,智能发布会将这些设置发布到生产站点。我需要隔离CM(内容管理)。 –

+0

你的问题不是很清楚。 CM来自内容管理,所以从你的问题我知道你正在尝试保护Sitecore CMS ..默认情况下是安全的。我想你想启用登录网站,对吧? –

回答

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> 
0

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

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. 起始物品:设置为你好世界的页面(假设这是家项目)
  2. 数据库:设置为主(取决于您的测试用例),您可以使用网络分贝,以及)
  3. loginPage:重定向到Sitecore的登录页面
  4. requireLogin:强制登录,设置为TRUE
+0

已经尝试过。它不起作用。 –