2016-04-28 76 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

已經嘗試過。它不起作用。 –