2016-04-28 8 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はContent Managementから来ているので、あなたの質問からは、デフォルトでセキュリティで保護されているSitecore CMSを保護しようとしていることを理解しています。あなたはウェブサイトのログインを有効にしたいと思いますよね? –

答えて

0

に設定し、サイトコアのコミュニティに接触し、ログインを強制し、私が見つけました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設定の誤った設定に関連していました。 「こんにちは世界」のページが存在しない場合は、あなたのケースでもあります。

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世界のページ
  2. データベースに設定を:マスターに設定します(テストケースによって異なります)ウェブデシベル、同様)
  3. loginPage:サイトコアのログインページにリダイレクト
  4. はrequireLogin:さらに調査した後TRUE
+0

はすでにそれを試みました。それは動作しません。 –

関連する問題