Cakephpでクッキーの期間を設定できないのはなぜですか
質問
それで、私は多くのことを試しましたが、それでもGoogle Chromeの開発者ツールを使用して「セッション」に設定されたCookieに常になります。これが私の現在の設定です:
core.php:
Configure::write('Session.cookie', 'session');
Configure::write('Session.timeout', '3600');
Configure::write('Session.start', true);
Configure::write('Security.level', 'high');
users_controller.php
$this->Cookie->write('xHi1PeWmAw', $user_record['User']['id']);
security.Level、SESSION.TIMEOUTを変更しようとしました。そして、それをすべて組み合わせていますが、その期間を変えているようには見えません。また、私はこのクッキーができるだけ長く続くために理想的になることを考えると、短い期間と長い期間で試しました。私が間違っていることを教えてください。
解決
私は同じ問題を抱えていました(CakePHP 1.3.7)が、今ではwrite()メソッド内に持続時間を設定した場合にのみ動作します。
$this->Cookie->write ("cookie_name", "Some value", true, "+1 months");
他のヒント
これがあなたの問題を修正することを保証することはできませんが、セッションを適切に構成する方法を説明できます。
最初に設定します Security.timeout
変数。これは秒単位のタイムアウト値を表しますが、これはセッションの有効期限に匹敵するものではありません。この数は、あなたの設定に応じて一定の値を掛けます Security.level
変数。
'high' = x 10、 'medium' = x 100、 'low' = x 300、
これがあなたの有効期限を与えるものです。たとえば、あなたが持っている場合 Session.timeout
30、a Security.level
低いと、セッションは30*300秒、つまり150分で期限切れになります。
Cookieをセッションとして使用している場合、その時間は0に設定されています。つまり、ブラウザが閉じると期限切れになるように設定されています。以下のコードに示すように、コントローラーでこの番号を変更しようとすることができます。それが違いを生むかどうかを確認します。私はこれをテストしていませんが、それはショットの価値があります。
var $components = array('Cookie');
function beforeFilter() {
$this->Cookie->name = 'baker_id';
$this->Cookie->time = 3600; // or '1 hour' //IF 0 THIS IS A SESSION COOKIE
$this->Cookie->domain = 'example.com';
$this->Cookie->secure = true; //i.e. only sent if using secure HTTPS
$this->Cookie->key = 'qSI232qs*&sXOw!';
}