CakePHPがセッション管理時にセットするCookieのパスを自由に設定

CakePHP 1.2RC3を利用してます

CakePHPは、セッション管理時に発行するCookieのパスをwebrootが設置してあるパスに自動セットします。
例えば、
/home/myname/public_html/cake/webroot 
というディレクトリ構成でURLが
http://www.example.com/cake/xxxxx
というような場合、CakePHPで発行するCookieのパスは /cake という値がセットされます。
従って、
http://www.example.com/hoge/hoge.php
というような/cake以外のURLにはセッションが引き継げません。


前にこのことを下記の記事に書いたのですが、
SessionのAutoStartをOffにして、手動でセッション管理 (セッションコンポーネント編)
SessionのAutoStartをOffにして、手動でセッション管理
もっとスマートなやり方がありました。


config/core.phpにて

Configure::write('Session.start', false);

として、セッションを自動でスタートしないようにします(自動でスタートするとパスが指定できないので)


その代わりに下記のように、app/app_controller.phpのbeforeFilterにてすべてのアクションでセッションをスタートさせます。activateでパスを指定すると、そのパスをセットしたCookieを発行してセッション管理できます。

function beforeFilter(){

	$this->Session->activate('/');
}

参考
http://www.topofcool.com/2008/05/how-to-set-the-session-path-for-cakephp-sessions/


追記
Session.startをtrueにしても、Cookieのパスをコントロール出来るという記事がありました。これが一番いいかも。
Session.startをfalseにするとSessionHelper->checkで常にfalseになる