任意のウェブページに埋め込めるタイプのもので、サービスに対してセッションを維持する仕様(POST用の使い捨てkeyを保持する)。
しかし、何かサービスにアクセスするたびに、セッションが破棄・生成されているようだ。
Security.levelがhighに設定されていると、セッション「ID」は毎回生成されるのがCakePHPの仕様。
* CakePHP session IDs are also regenerated between requests if * 'Security.level' is set to 'high'.
だけどセッション自体は維持されるはず。。。
結局フレームワークのソースを読むことに。
highとmediumの場合、セッションが有効かどうか判断するのにreferrerも勘案されるらしい。
んで、クロスドメインなJSONPなウェブアプリだったため、referrerがinvalidになって毎回破棄、ということのようだ。
結局、lowを採用、Session.timeoutを小さくして調整することにした。
■cake/libs/session.php
function __initSession() { switch($this->security) { case 'high': $this->cookieLifeTime = 0; if (function_exists('ini_set')) { ini_set('session.referer_check', $this->host); } break; case 'medium': $this->cookieLifeTime = 7 * 86400; if (function_exists('ini_set')) { ini_set('session.referer_check', $this->host); } break; case 'low': default: $this->cookieLifeTime = 788940000; break;
php:5.1.6
CakePHP:1.2.0.7296-rc2
>> Home