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 標準のセッションの仕組みを使用しています。
匿名セッションおよび認証済み ("ログイン") セッション名前空間の両方をサポートしています。
Zend Framework の認証コンポーネントである 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
互換の保存ハンドラは、このメーリングリストに投稿されます。