期限切れのセッションと不正なHTTPリクエスト
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
ユーザーのセッションが終了すると、アプリケーションはログインページにリダイレクトしなければなりません。SPEAK 3は、アプリケーション内のすべてのHTTPリクエストに対して401 Unauthorized Accessエラーを処理することでこれを実現します。
シングルページアプリケーションでは、アプリケーションのエントリポイントの認証を処理するために、Sitecoreの ルーティングおよびホスティング規則 を必ず使う必要があります。
認可処理フローは以下の通りです:
- クライアントはサーバーにリクエストを送信します。
- サーバーはリクエストが認証されているかどうかを検証します:
- もし真実であれば、サーバーはリクエストを進めます。
- そうでなければ、サーバーはクライアントに401エラーを返します。
- クライアントが応答を処理します:
- 認証されれば通常通り進みます
- 401エラーが戻ると、ページが更新されます。サーバーはページ更新時にログインにリダイレクトします(そのエントリポイントが承認を確認した場合)。
バックエンドのセットアップ
ASP.NET Web APIを使ってバックエンドAPIサービスを開発する場合は、Authorize属性を使ってサービスの認証を有効にしてください。MVCを使って開発する場合は、SitecoreAuthorize属性を使い、MVCセッションを正しく処理します。
すべてのHTTPリクエストに対して401エラーコードを処理してください
AngularのSPEAK3.Integrationパッケージ(ng-sc)は、Angularアプリケーションにおける401エラーコードを検出するためのアプリケーション全体ソリューションを提供します。
このモジュールをコードにインポートすると、公式のAngular HTTPクラスに自動的にパッチパッチを当ててすべての401エラーを検出します。401エラーがアプリケーションに返された場合、モジュールはページリロードをトリガーします。その後、ページが更新されると、Sitecoreはユーザーをログインページにリダイレクトします:
import { SciAuthHttpModule } from '@speak/ng-sc/auth-http'; // add module in root app module @NgModule({ imports: SciAuthHttpModule,
})
リクエストには引き続き公式のHTTPモジュールを使用してください。コードの書き方に違いはありませんが、コードがすべての401リクエストを処理します。アプリケーションは404エラーなど他のエラーコードも処理しなければなりません。