1. SPEAK 3

シングルページアプリケーションのルーティングおよびホスティングの慣習

Version: 9.0
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecoreインスタンス内でAngular CLIアプリケーションをホストでき、アプリケーションへのリクエストをルーティングするための規約を使えます。

このトピックでは以下の内容を説明します:

SitecoreにおけるAngularアプリケーション

Angular-CLIアプリケーションは通常、関連するファイルのセットを含みます。

  • アプリケーションエントリポイントファイル(index.html)です。このファイルはアプリケーションが使用するJavaScriptファイルを参照します。
  • main.bundle.js、inline.js、styles.bundle.jsを含む、コンパイルされバンドルされたJavaScriptファイルの集合です。JavaScriptファイルの集合はコンパイルエンジンによって異なります。JavaScriptファイルにはアプリケーションロジックが含まれています。

デフォルトでは、Angular-CLIアプリケーションはサーバーのルート上で動作します。しかし、Sitecoreではこの方法でAngularアプリケーションを実行できないため、アプリケーションのルートパスを変更する必要があります。

通常、Angular-CLIアプリケーションは内部ルーティングを含み、Angularクライアント側で解決されます。ユーザーはアプリケーションのエントリーポイントへの仮想パス(index.html)と、アプリケーション内で設定された内側クライアント側ルートの組み合わせを通じて任意のページにアクセスします。

次のシナリオを考えてみてください:

  • アプリケーションは以下の名でホストされています: your instance\website\sitecore\shell\client\Applications\MyAwesomeApp\
  • ユーザーがこのURLにアクセスすると、ウェブサーバーは自動的にアプリケーションファイルを取得し、ブラウザに返します。ブラウザは index.html ファイルを表示します。
  • アプリケーションのルーティングは、/dashboardルートを取得してダッシュボードページを表示するように設定されています。
  • ユーザーがアプリケーション内からダッシュボードページにアクセスすると、ブラウザはこのURL: http://your instance/sitecore/shell/client/Applications/MyAwesomApplication/dashboardを表示しますが、ブラウザは自動的にサーバーから既に取得した適切なファイルを表示します。
  • しかし、ユーザーが手動でダッシュボードのURLをブラウザに入力すると、サーバーはファイルを見つけられず、エラー404(ファイルが見つかりません)を返します。これは、ダッシュボードのルートがそのパスを持つサーバー上のファイルに直接対応していないために起こります。

この問題を解決するために、ルーティング慣習を用います。

ルーティングおよびホスティングの規則

ルーティングとホスティングの規則を使う際は、各アプリケーションごとにフォルダを定義します。Sitecoreを設定して、サーバーがクライアント側ルートのリクエストに適切に応答するようにします。

慣例は以下の通りです:

  • 各アプリケーションは固有のアプリケーション名(AppName)を持たなければなりません。
  • ファイルシステム内の各アプリケーションごとにアプリケーションホストフォルダを定義します: /sitecore/shell/client/Applications/AppName。
  • ng-scモジュールのビルドタスクを使って、Angularのエントリポイントに基づくSitecoreエントリポイントを生成します。このタスクの結果、index.htmlの代わりにindex.aspxページが表示されます。これを行うことで、アプリケーションを認証Sitecore準拠し、Anti-CSRF保護を有効にする必要があります。

ng-sc cliツール

ng-sc cliツールを使ってindex.htmlファイルをindex.aspxに変更します。このツールはAngularプロジェクトのビルド後ステップとして利用できます。ツールの名前が .aspxにリネームされると、ファイルの上部に1行のコードも追加されます。このコードにより、アプリケーションがSitecore内で動作する際にSPEAK 3つの機能が可能になります。これらの機能には、Anti-CSRFトークン、エントリーポイントユーザー認証などが含まれます。

以下のパラメータでng-sc --entry ./dist/index.htmlを使用します:

旗

概要

デフォルト値

--エントリ、-e

aspxファイルを作成するためのファイル名(入力ファイル)。標準的なAngular-CLIセットアップでは、./dist/index.html.

この議論は必要であり、デフォルトの値は存在しません。

--アウト、-o。

出力ファイルの名前を入力ファイルに対して相対的に示します。

デフォルト値は index.aspxです。

--キープ、-K

ブール値です。設定(true)の場合、ツールは入力ファイルを削除しません

エントリーファイルはデフォルトで削除されます。なぜなら、エントリー .html ファイルをSitecoreアプリケーションと一緒に送ることを推奨していないからです。

Sitecoreがリクエストを処理する方法

Sitecore。Speak.統合モジュールは以下の方法でリクエストを処理します:

  • モジュールは config ファイルを読み込みます。
  • モジュールは preprocessRequest パイプラインを拡張し、すべてのリクエストを受信します。
  • モジュールがURLリクエストがアプリケーションフォルダのいずれかに対応していることを検出すると、URLを書き換えてリクエストを正しいアプリケーションの index.aspx ファイルにリダイレクトします。

入口

デフォルトでは、ng-sc cliツールはSitecore.Speak.Integration.Spa.SecureSpaPageクラスを継承するASP.NETウェブフォームページを作成します。

index.aspxファイルにリダイレクトした後、Sitecore統合は以下の方法でバックエンドロジックを設定します。

  • Anti-CSRFクッキーを設定します。
  • 対応するアプリケーションSitecore項目を探します。
  • 現在のユーザーがこのアイテムにアクセスできるかどうかを確認します。アイテムがなければアクセス権限はチェックしません。
  • このアイテムの EntryPoint フィールドを読み込みます(デフォルト index.aspx)。アプリケーション項目がなければ、 index.aspx をエントリポイントとして使用します。
  • この規則に従ってアプリケーションフォルダを探そうとします。
  • EntryPointファイルがアプリケーションフォルダに存在する場合、URLはこのファイルに書き換えられます。

また、Sitecore.Speak.Integration.Spa.SpaPageクラスもあります。このクラスはShellPage.IsLoggedIn() チェックを行いません。アプリケーションで認証Sitecore必要ない場合は、このクラスをアプリケーションのエントリーポイントとして利用できます。

既知の問題点

sc_lang=languageクエリ文字列パラメータでコンテキスト言語を切り替えることができますSitecore。SPEAK 3はエントリーポイントソリューションを使用するアプリケーションではこの機能をサポートしていません。

この記事を改善するための提案がある場合は、 お知らせください!