Недавно я сделал три приложения Cake, и все трое поделились этой проблемой. Конфигурация в основном является запасом, и я использую это как параметры сеанса.
Configure::write('Session', array( 'defaults' => 'php', 'cookie' => 'test' ));
После многих поисковых запросов все просто говорят, что уровень безопасности слишком высок, но я никогда не менял это значение, это:
Configure::write('Security.level', 'medium');
Изменить : я также пытался с низкой степенью безопасности и без изменений.
Я использую только basic auth, чтобы проверить, зарегистрирован ли пользователь или нет.
После входа в файл cookie истечет три часа, а срок действия не обновляется до тех пор, пока я не войду в систему снова, это нормально?
Кажется, я вообще не реплицирую проблему, иногда я вхожу в систему, и следующий клик снова выйдет из системы, а в других случаях это будет длиться некоторое время.
Я использую Chrome в Windows 7, и на сайте нет AJAX.
Есть идеи? Благодарю.
Вы используете Ajax. Является ли проблема только в IE?
IE использует другую строку агента браузера для вызовов Ajax самому браузеру. Для дополнительной безопасности Cake проверяет агент браузера, и в случае IE думает, что другой браузер пытается захватить сеанс, поскольку агент отличается.
Вы можете отключить эту проверку с помощью:
Configure::write('Session.checkAgent', false);
После столкновения с той же проблемой я обнаружил, что это вызвано значением Session.cookieTimeout. Хотя сеанс php все еще действителен, дата истечения срока действия cookie сеанса не обновляется.
Теперь это моя конфигурация сеанса
Configure::write('Session', array( 'defaults' => 'php', 'timeout' => 30, // The session will timeout after 30 minutes of inactivity 'cookieTimeout' => 1440, // The session cookie will live for at most 24 hours, this does not effect session timeouts 'checkAgent' => false, 'autoRegenerate' => true, // causes the session expiration time to reset on each page load ));
проблема заключается в сеансах:
Сначала проверьте ur 'phpinfo ();'
проверьте, являются ли сеансы основаны на файлах.
если да, то пройти процесс.
создайте новый файл сценария (php), который содержит только этот код: <?php var_dump(session_save_path());?>
запустите его, если вы получите пустую или пустую строку, затем перейдите к этому процессу:
chmod 777
. session_save_path('pathToxyz');
и затем вы сделали.
если в случае, если сеансы установлены как память: настройка не требуется. они просто используют системную память. в этом случае вы бы никогда не столкнулись с этой проблемой.
Вы не единственный, у кого проблемы с сеансами CakePHP в браузере Chrome.
Pixelastic coder предлагает следующее исправление , цитата:
Просто создайте файл с именем session_custom.php
в app/config/
, отбросьте в нем следующие строки:
// Killing this config that was causing so much trouble with Chrome ini_set('session.referer_check', ''); // No session id in url ini_set('session.use_trans_sid', 0); // Using custom cookie name instead of PHPSESSID ini_set('session.name', Configure::read('Session.cookie')); // Cookie like time, depending on security level ini_set('session.cookie_lifetime', $this->cookieLifeTime); // Cookie path ini_set('session.cookie_path', $this->path);
Затем установите Configure::write('Session.save', 'session_custom');
в вашем файле core.php
.