Проблема:
При входе в систему я быстро щелкаю, чтобы открыть несколько ссылок на новых вкладках, первая работает нормально, но последующие не могут прочитать user
из сеанса и заставляют приложение думать «нет пользователя». данные = нет доступа, перенаправить на вход ".
Мне сказали, что это может быть связано с блокировкой сеанса PHP. Идея в том, что первая страница загружается, и, таким образом, читает сессию. Прежде чем это будет сделано, следующий пытается прочитать сессию, но он все еще заблокирован первым.
Это также происходит, если просто щелкнуть одну ссылку, а затем щелкнуть другую ссылку. Поскольку первая ссылка все еще попадает на сервер, вызывая блокировку сеанса, поэтому, когда браузер пытается перевести вас на вторую, он не может прочитать user
и считает, что вы не вошли в систему.
Это кажется очень странным поведением по умолчанию, и я должен представить, что кто-то придумал достойное решение, кроме "просто не открывайте несколько вкладок" и "не передумайте, нажимая ссылки".
Этого не происходит в моем приложении CakePHP 2.x PHP 5.x, но это происходит в моем приложении CakePHP 3.x PHP 7.x.
Одно из предложенных решений:
Мне сказали попробовать Redis. Хотя это звучит как приличное решение (Redis не блокирует сеанс), оно удаляет полезный аспект блокировки сеанса и, похоже, не работает. Даже после настройки приложения CakePHP 3 на использование redis для сеансов и проверки его записи данных сеанса в redis проблема все еще возникала.
Вопросы:
Каков стандартный метод решения этой проблемы? Есть ли в каждом приложении CakePHP 3.x эта ошибка по умолчанию?
Примечание / Дополнительный второстепенный вопрос:
Я заметил, что значение cookie, которое Cake хранит в разделе «CAKE», изменяется при большинстве загрузок страницы. Значение является ключом сеанса (минус префикс). Означает ли это, что он устанавливает новый сеанс при каждой загрузке страницы? Если так, есть ли причина для этого?