Мой сайт «разделяет» кеш, но только в сети моей компании - PullRequest
0 голосов
/ 03 июля 2018

Проблема

  • У нас есть веб-сайт, работающий в 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 обновлять каждый раз, когда это кажется плохим решением, так как мы не знаем, когда делать это принудительное обновление.

Извините, если что-то не понятно или моя грамматика неверна. Любая другая информация, которая вам может понадобиться, я буду обновлять пост как можно скорее.

Спасибо.

...