目次
このドキュメントの最新版 も参照ください。また、 Zend Framework Auth team は皆さんのフィードバックや協力をお待ちしています。 メーリングリストは fw-auth@lists.zend.com です。
PHP で書かれたウェブアプリケーションでは、セッション
を使用してサーバ側 (状態を保持するデータ)
とクライアント側 (特定のユーザエージェント。たとえばウェブブラウザ)
の論理的な一対一の関係を表します。
Zend_Session
はセッションデータの管理と保持を行い、クッキーのデータを論理的に補完し、
同一クライアントからの複数ページにわたるリクエストを扱います。
クッキーのデータと異なり、セッションデータはクライアント側には保存されません。
セッションデータがクライアントと共有されるのは、
サーバ側のソースコードの脆弱性のために
クライアントからのリクエストへの応答として使用できるようになった場合のみです。
このコンポーネントのドキュメントにおいて「セッションデータ」は、
$_SESSION[]
に保存されたり Zend_Session
で管理されたり、
独立して Zend_Session_Namespace
のアクセス用オブジェクトで管理されたりする
サーバ側のデータをさすものとします。
セッション名前空間
により、セッションデータに対して昔ながらの
名前空間
を使用したアクセスが可能となります。
これは、文字列をキーとした連想配列形式で実装されています。
(通常の PHP の配列と同じです)。
Zend_Session_Namespace
は、$_SESSION[]
の一部を切り取って名前空間つきでアクセスするためのオブジェクトのインスタンスを作成します。
Zend_Session
コンポーネントは、PHP の既存の
ext/session をラップして管理用インターフェイスを提供します。また、
Zend_Session_Namespace
のセッション名前空間を持続させるための API も提供します。
Zend_Session_Namespace
は、標準化されたオブジェクト指向のインターフェイスで
名前空間を扱います。これは、PHP 標準のセッションの仕組みを使用しています。
匿名セッションおよび "ログイン" セッション名前空間の両方をサポートしています。
ZF の認証コンポーネントである Zend_Auth
は、
Zend_Session_Namespace
を使用して "Zend_Auth"
名前空間に認証済みユーザの情報を保存します。
Zend_Session_Core
が内部で使用しているのは通常の PHP
ext/session 関数なので、おなじみのオプションや設定が適用されます
(http://www.php.net/session
を参照ください)。これは、オブジェクト指向で扱えたりデフォルトをサポートしていたりという点で
Zend Framework とうまく組み合わせることができます。
したがって、クッキーに記録したり URL に埋め込まれたりする
標準のセッション ID を用いて、クライアントとセッション状態データの関連付けが行われます。
クラスタを構成するサーバ群のひとつにクライアントから接続している際には、 デフォルトの セッション保存ハンドラ は、この関連を保持するという問題を解決できません。 セッションの状態に関するデータは、(接続している) そのサーバにしか保存されないからです。 このような場合に対応できるような保存ハンドラを将来提供する予定です。 使用できるようになった時点でここで説明します。 保存ハンドラの案を出したり実際に作成したりした場合は、メーリングリスト fw-auth@lists.zend.com にお知らせください。 Zend_Db 互換の保存ハンドラは、このメーリングリストに投稿されます。