2

異なる物理フォルダーを指す 2 つの IIS サイトがあります。これは、web.config と、サイトに使用されるファイルとアセンブリを区別できるようにするためです データベースは両方のサイトで同じインスタンスを指すように設定されています web.config では、異なる部分から開始するように構成されています 構造は次のようになります。

  • /sitecore/content/home/default

  • /sitecore/content/home/イントラネット

ここまでは順調ですね。

ここでの問題は、完全なパスを入力することで、実際のサイトに属していないコンテンツを取得できることです。すなわち。

http://www.default.com/sitecore/content/home/intranet.aspx<-- root としてwww.default.com設定されているため、これは許可されません。/sitecore/content/home/default

これを禁止する組み込みのメカニズムはありますか、それとも「クロスサイト」リクエストを違法にするために itemresolver をサブクラス化する必要がありますか。

4

2 に答える 2

2

これは、Sitecore がアイテムを解決する方法に関係しています。アイテムごとに 3 つの異なる URL を見つけました。たとえば、次の構造があるとします。

-sitecore
  -content
    -home
      -page1

次のいずれかの方法で page1 にアクセスできます。

  • http://mysite/sitecore/content/home/page1.aspx
  • http://mysite/page1.aspx
  • http://mysite/home/page1.aspx

ただし、これを知っていても問題は解決しません。私が提案できる最善の解決策は、セキュリティを使用することです。ただし、両方のサイトが匿名アクセスを必要とする場合、問題はこれをどのように制御するかです。

2 つの個別の web.config があるため、Sitecore 構成セクションも分離する必要があると思います。そこで、http リクエスト開始パイプラインの一部として実行されるパイプライン プロセスを作成し (web.config で /configuration/sitecore/pipelines/httpRequestBegin として)、サイトごとに 1 つ作成し、関連する web.config を更新します。このプロセスが呼び出されると、ユーザーが要求したサイトへのアクセスを制限するグループに属する仮想ユーザーが作成される可能性があります。

仮想ユーザーを作成する方法を示すコードがいくつかあります。

そしてここでパイプラインについて:

お役に立てれば :-)

于 2009-09-30T15:15:52.393 に答える
0

イントラネット アイテム (およびその下) が Sitecore のセキュリティで保護されている場合、問題にはならず、アクセスすることもできません :)

セキュリティで処理できない場合は、ItemResolver を使用します。

乾杯

于 2009-09-28T18:53:44.960 に答える