Проблема
У нас есть веб-сайт, работающий в Google Cloud (CentOS 7) с Apache, кажется, что сайт хорошо работает за пределами нашей сети, но когда кто-то внутри компании пытается получить доступ / войти в систему, это показывает, что другой рабочий аккаунт вошел в систему, и иногда мы можем получить доступ к некоторым продуктам, к которым у нас не было доступа раньше, отсюда все становится более странным, когда мы делаем какой-то запрос с нашего сайта, он сохраняет журнал, а когда мы проверяем, пользователь, который сделал запрос был пользователем, который вы вошли первым.
Всякий раз, когда мы запускаем обновление (Ctrl + F5 в Google Chrome), проблема, похоже, будет "исправлена", пока другой пользователь не войдет в нашу сеть.
Проблема возникает и на других навигаторах.
Система не была разработана мной, и она немного устарела, но никогда раньше не имела такого поведения.
Ниже, я буду публиковать некоторые изображения шаг за шагом, чтобы прояснить, что происходит, и некоторые строки кода.
Скриншоты
Сначала я вошел в систему с этим пользователем - Marcelo Correia
Когда я изменил страницу, она мгновенно изменилась на моего пользователя (обычно это другой пользователь, недавно вошедший в нашу сеть
Здесь я сделал запрос с числа, которое я должен подвергнуть цензуре: 108. Обратите внимание, что в верхней части страницы все еще есть мой пользователь: Нельсон Родригес
И, наконец, когда я проверяю журнал, сообщаю, что запрос действительно был сделан пользователем, которого я зарегистрировал: Marcelo Correia, но каким-то образом все еще остается Нельсоном Родригесом наверху и в поле "Nome Usuário" (Имя пользователя) ) установлен Нельсон Родригес тоже.
Наш Конверт
- Хост: Google Cloud
- Сервер: CentOS 7
- Торт PHP 2.6.0
- Javascript / JQuery
Коды / Некоторые настройки
Наш Навбар
<ul class="nav navbar-nav navbar-right m-n hidden-xs nav-user user">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<!--span class="thumb-sm avatar pull-left">
<?php echo $this->Html->image('user.png');?>
</spanaaa-->
<?php echo $this->Session->read('Auth.User.nome')?> <b class="caret"></b>
</a>
<ul class="dropdown-menu animated fadeInRight">
Cake получает пользователя по сеансу, но когда мы вошли в систему, я уверен, что у нас правильное имя -> Marcelo Correia
Мы используем файл на основе для хранения кэша.
$engine = 'File';
$duration = '+999 days';
if (Configure::read('debug') > 0) {
$duration = '+10 seconds';
}
/**
* Configure the cache used for general framework caching. Path information,
* object listings, and translation cache files are stored with this configuration.
*/
Cache::config('_cake_core_', array(
'engine' => $engine,
'prefix' => $prefix . 'cake_core_',
'path' => CACHE . 'persistent' . DS,
'serialize' => ($engine === 'File'),
'duration' => $duration
));
/**
* Configure the cache for model and datasource caches. This cache configuration
* is used to store schema descriptions, and table listings in connections.
*/
Cache::config('_cake_model_', array(
'engine' => $engine,
'prefix' => $prefix . 'cake_model_',
'path' => CACHE . 'models' . DS,
'serialize' => ($engine === 'File'),
'duration' => $duration
));
Наш префикс не используется ни в одном другом приложении.
Конфигурация сеанса:
/**
* Session configuration.
*
* Contains an array of settings to use for session configuration. The defaults key is
* used to define a default preset to use for sessions, any settings declared here will override
* the settings of the default config.
*
* ## Options
*
* - `Session.cookie` - The name of the cookie to use. Defaults to 'CAKEPHP'
* - `Session.timeout` - The number of minutes you want sessions to live for. This timeout is handled by CakePHP
* - `Session.cookieTimeout` - The number of minutes you want session cookies to live for.
* - `Session.checkAgent` - Do you want the user agent to be checked when starting sessions? You might want to set the
* value to false, when dealing with older versions of IE, Chrome Frame or certain web-browsing devices and AJAX
* - `Session.defaults` - The default configuration set to use as a basis for your session.
* There are four builtins: php, cake, cache, database.
* - `Session.handler` - Can be used to enable a custom session handler. Expects an array of callables,
* that can be used with `session_save_handler`. Using this option will automatically add `session.save_handler`
* to the ini array.
* - `Session.autoRegenerate` - Enabling this setting, turns on automatic renewal of sessions, and
* sessionids that change frequently. See CakeSession::$requestCountdown.
* - `Session.ini` - An associative array of additional ini values to set.
*
* The built in defaults are:
*
* - 'php' - Uses settings defined in your php.ini.
* - 'cake' - Saves session files in CakePHP's /tmp directory.
* - 'database' - Uses CakePHP's database sessions.
* - 'cache' - Use the Cache class to save sessions.
*
* To define a custom session handler, save it at /app/Model/Datasource/Session/<name>.php.
* Make sure the class implements `CakeSessionHandlerInterface` and set Session.handler to <name>
*
* To use database sessions, run the app/Config/Schema/sessions.php schema using
* the cake shell command: cake schema create Sessions
*
*/
Configure::write('Session', array(
'defaults' => 'cake'
));
Что мы уже пробовали
- Измените конфигурацию сеанса на PHP, торт и кэш (ни один из них не работал)
- Перезапустите Apache
- Восстановить старую версию проекта
Изменить заголовок с нашей страницы
Заставлять JS обновлять каждый раз, когда это кажется плохим решением, так как мы не знаем, когда делать это принудительное обновление.
Извините, если что-то не понятно или моя грамматика неверна. Любая другая информация, которая вам может понадобиться, я буду обновлять пост как можно скорее.
Спасибо.