3.6 セッション・ステートの管理の理解
Oracle APEXは透過的にセッション・ステートを保持するため、開発者は、アプリケーションの任意のページでセッション・ステートの値を取得および設定できます。
- セッション・ステートの概要
セッション・ステートにより、開発者は、ユーザーが様々なアプリケーション・ページをナビゲートしたときのユーザーの値を格納および取得できます。 - セッションIDについて
セッションIDは、特定のユーザーのアクセスの期間(またはセッション)に、そのユーザーに割り当てられる一意の番号です。 - セッションの概要
セッションは、ページ・ビュー間で永続性(またはステートフルな動作)を確立する論理的な構成体です。
親トピック: アプリケーション・ビルダーの概念
3.6.1 セッション・ステートの概要
セッション・ステートにより、開発者は、ユーザーが様々なアプリケーション・ページをナビゲートしたときのユーザーの値を格納および取得できます。
Hypertext Transfer Protocol (HTTP)は、HTMLページの配布に最も一般的に使用されるプロトコルであり、ステートレスなプロトコルです。Webブラウザは、ページ全体をダウンロードするために必要な時間のみサーバーに接続します。サーバーでは、各ページ・リクエストは、発生済または将来発生する他のページ・リクエストと関連しない個別のイベントとして処理されます。後続のページのあるページに入力したフォーム値にアクセスするには、値をセッション・ステートとして格納する必要があります。Oracle APEXは透過的にセッション・ステートを保持するため、開発者は、アプリケーションの任意のページでセッション・ステートの値を取得および設定できます。
親トピック: セッション・ステートの管理の理解
3.6.2 セッションIDについて
セッションIDは、特定のユーザーのアクセスの期間(またはセッション)に、そのユーザーに割り当てられる一意の番号です。
Oracle APEXエンジンは、ページ・リクエストごとにユーザーのアイデンティティを証明し、データベースからセッション・ステートをフェッチするためにセッションIDを確立します。セッションIDは、ページ・リクエストのURL内に明示的に示されています。URLの第3パラメータとしてセッションIDが表示されます。
- f?p URL構文:
https://apex.example.com/ords/f?p=392:3:13766599855150
- 簡易URL構文:
https://apex.example.com/ords/mycompany/r/hr-app/update-employees?session=13766599855150
どちらの例でも、セッションIDは13766599855150
です。
また、ページのHTML POSTデータにも明示的に示され、セッションのCookieのコンテンツ内にも間接的に示されています。このCookieは、認証時にAPEXエンジンによって送信され、アプリケーション(またはブラウザ)セッションの存続中、維持されます。
APEXは、認証プロセス中に新しいセッションIDを割り当て、認証されたユーザーのアイデンティティをセッションIDとともに記録し、継続的に各ページ・リクエストのURLまたはPOSTデータのセッションIDをセッションのCookieおよびデータベースのセッション・レコードと照合して確認します。この確認によって、柔軟性とセキュリティが向上します。
セッションIDがセッション・ステート用のキーであるのに対し、セッションのCookieおよびセッション・レコードは、セッションIDとユーザーの認証ステータスの整合性を保証します。
関連項目:
親トピック: セッション・ステートの管理の理解
3.6.3 セッションの概要
セッションは、ページ・ビュー間で永続性(またはステートフルな動作)を確立する論理的な構成体です。
各セッションには、一意の識別子が割り当てられています。Oracle APEXエンジンは、この識別子(セッションID)を使用して、各ページ・ビューの前後に、アプリケーションで作業中のデータ・セット(セッション・ステート)を格納および取得します。個々のセッションは相互に完全に独立しているため、任意の数のセッションがデータベース内に同時に存在できます。また、ユーザーは複数のブラウザ・プログラムで、アプリケーションの複数のインスタンスを同時に実行できます。
セッションは、ページ・リクエストの処理に使用されるOracle Databaseセッションとは論理的にも物理的にも異なります。ユーザーは、サインインからサインアウトまでの単一のAPEXセッションでアプリケーションを実行し、その期間は通常、分または時間単位です。このセッション中にページがリクエストされるたびに、APEXエンジンはOracleデータベース・セッションを作成または再利用してデータベース・リソースにアクセスします。多くの場合、これらのデータベース・セッションは、数分の1秒のみ存続します。
関連項目:
『Oracle APEX管理ガイド』のアクティブ・セッションの表示
親トピック: セッション・ステートの管理の理解