redirectすると、sessionが切れてしまう現象の件
ブラウザの種類により、redirectすると、sessionが切れてしまう現象が起きました
クロームと、サファリで起きるみたいで、前回はcore.phpのSecurity.levelをlowにすることで解決しましたが
根本の原因はリファラーのドメインが原因のようでした。
リファラーとは
→あるWebページのリンクをクリックして別のページに移動したときの、リンク元のページのこと
・cake/libs/session.php
switch ($this->security) {
case 'high':
$this->cookieLifeTime = 0;
if ($iniSet) {
ini_set('session.referer_check', $this->host);
}
break;
case 'medium':
$this->cookieLifeTime = 7 * 86400;
if ($iniSet) {
//ini_set('session.referer_check', 'twitter.com');
ini_set('session.referer_check', $this->host);
}
break;
case 'low':
default:
$this->cookieLifeTime = 788940000;
break;
}
のhighとmediumでは
session.referer_checkで$this->hostを見ています。
session.referer_checkとは
HTTP Referer に おいて確認を行う文字列を指定します。Refererがクライアントにより 送信されており、
かつ、指定した文字列が見付からない場合、埋め込 まれたセッションIDは無効となる
という、このチェックを行われるので、
OAuth認証ではtwitter.comと自分のプログラムのおいてあるサーバを行き来するので、
ドメインが異なってしまい、セッションIDが空にされてしまうようでした!
解決方法としては、リファラーを同じドメイン(プログラムを置いてあるドメイン)に変更すればできそうな
ものなんですが、ちょっと無理だったので、違う方法でセキュリティーを考えたいと思います。
CakePHPはSecurity.level lowまたはmediumだとブラウザを閉じても、セッションが終了しません
mediumの時は7日間、lowの時は25年間セッションが保持されるようです
セッションをブラウザを閉じたときに終了させたいので、
http://www.mrk.jp/taxonomy/term/72 を参考にしてみました!!!!!