SDIが有効になっている場合、AEM ナビゲーションに表示される未認証のメニュー項目
この記事では、Sling Dynamic Include (SDI)が有効になっている場合に、Adobe Experience Manager(AEM)のカスタムナビゲーションコンポーネントで不正なメニュー項目を表示する方法について説明します。 この問題は、コンポーネントが実行時にナビゲーションコンテキストを決定するために現在のページパスに依存している場合に発生します。 この問題を解決するには、ランタイムリクエストコンテキストではなくテンプレート固有の設定を使用するようにナビゲーション実装を再設計します。
説明 description
環境
Adobe Experience Manager(AEM)
問題/症状
- 編集不可のテンプレート構造に埋め込まれ、制限されたサイトセクションと公開サイトセクションをまたいでライブコピーされたカスタムナビゲーションコンポーネントは、SDIが有効になっている場合、元のページコンテキストを失います。
- SDIは、ナビゲーションコンポーネントをキャッシュされたページ内のスタブに置き換え、コンポーネントをレンダリングするために別のリクエストを発行します。
- SDI リクエストには、元のページ URLまたはパスコンテキストが含まれていません。
- ナビゲーションコンポーネントは、現在のページパスに基づいて、設定されたナビゲーションルート値を上書きできません。
- 制限付きユーザーを対象としたナビゲーションは、パブリックユーザーに表示される場合があります。
- SDIを無効にすると、予想されるナビゲーション動作が復元されますが、キャッシュされたナビゲーションによって制限付きコンテンツが公開されるリスクが再び生じます。
解決策 resolution
問題を解決するには、次の手順に従います。
- カスタムナビゲーションコンポーネントの実装を確認し、現在のページパスなど、ランタイムリクエストコンテキストに依存するロジックを特定して、ナビゲーションルートプロパティを決定します。
- 制限付きナビゲーションコンテキストと公開ナビゲーションコンテキストが別々のテンプレートを使用するように、テンプレート構造を再設計します。 実行時に動的に導き出すのではなく、各テンプレート内でナビゲーションルートプロパティを直接設定します。
- ナビゲーションコンポーネントを更新して、テンプレート設定で定義されたナビゲーションルート値を使用し、リクエストコンテキストに基づく値の上書きを停止します。
- 制限付きサイトセクションと公開サイトセクションの両方でナビゲーションコンポーネントをテストし、コンテキストごとに適切なメニュー項目のみが表示されることを確認します。
- SDIを再度有効にし、ナビゲーションが正しくレンダリングされ、権限のないメニュー項目が公開されていないことを確認します。
- 実装がカスタムナビゲーションロジックに大きく依存する場合は、コンポーネントまたはテンプレート構造の再設計について、実装パートナーと連携することを検討してください。
recommendation-more-help
experience-cloud-kcs-help-kbarticles