У меня странная (и очень спорадическая) проблема с Symfony 1.4. В частности, мое приложение Symfony (в очень редких случаях) показывает свежие сеансы, которые были зарегистрированы в моем приложении, даже если это не так.
Я использую следующий код в своем заголовке, чтобы проверить, является ли сеанс зарегистрированным пользователем. Если это так, мы показываем им приветственное сообщение и приглашаем их войти:
<?php if ($sf_user->isAuthenticated()) { ?>
<div class="btn">
Welcome back, <?php echo $sf_user->getProfile()->getFirstName(); ?>
</div>
<?php }
Однако иногда новые сеансы отображают приветственное сообщение от случайного пользователя из нашей системы. Совсем недавно кто-то загрузил новые сеансы и получил сообщение «Добро пожаловать» для кого-то еще в нашей системе.
Важное примечание: это первый раз, когда это произошло. Я не могу воспроизвести проблему после попытки 40+ браузеров и местоположений.
Мы используем Symfony 1.4 с аутентификацией sfGuard, которая поставляется вместе с Symfony.
Как ни странно, хотя приведенный выше код показывает, что сеанс происходит от вошедшего в систему пользователя, пользователю не предоставляется никаких других разрешений на вход в систему.
Любая помощь будет принята с благодарностью.
У нас была очень похожая проблема. настройка session.hash_function
чтобы более сильная хеш-функция помогла нам:
session.hash_function = "sha256"
Из-за скорее большое количество посещений и короткое время жизни сеанса, сеансы часто регенерировались (то есть генерировался новый идентификатор сеанса).
Кажется, что иногда это вызывало конфликт идентификатора сеанса: два разных пользователя получили один и тот же идентификатор сеанса. Это заставило одного из пользователей увидеть страницу, когда она вошла в систему как другой пользователь.
Не нужно говорить, что это было чертовски сложно отлаживать. Мы просто пробовали разные вещи, чтобы исправить или воспроизвести проблему без удачи. настройка session.hash_function
в sha256
заставил проблему исчезнуть (о новых случаях не сообщалось больше года).
Они рекомендуют устанавливать session.hash_function
в sha256
на официальной странице документа PHP:
http://php.net/manual/en/session.security.ini.php
session.hash_function
настройка была удалена начиная с PHP 7.1.0.
Теперь он использует сильную функцию по умолчанию.
Других решений пока нет …