У моих пользователей настроен ряд отношений в Doctrine, но, в частности, одна из них вызывает у меня множество проблем, у каждого пользователя может быть несколько членств, и у каждого членства есть тип членства.
Дляоднако по какой-то причине, когда я загружаю эти членства, мне кажется, что это срывает мой сеанс, я вхожу в систему и получаю страницу «Ваша учетная запись», как я должен делать, но если я обновляю страницу, меня отправляют обратно на экран входа в систему.Мои сеансы хранятся в базе данных, поэтому я проверял их, чтобы увидеть, что происходит, и вот что я вижу:
- Сессия начинается пусто
- Я вхожу, но делаюуверен, что меня перенаправили на страницу, которая не загружает членство
- Сессия теперь содержит объект пользователя и всю информацию об отношениях
- Я захожу на «Ваш аккаунт», где загружаются членства, они отображаются правильно.
- Сеанс был обнулен и теперь стал таким же, как на шаге 1
- Я обновляю страницу и возвращаюсь на страницу входа
Я определилмой собственный пользовательский провайдер, и я заметил, что если я установил тип членства для каждого членства на null в refreshUser, он начинает работать, поэтому я предполагаю, что у сеанса возникают проблемы с этим отношением.
Я действительно изо всех сил пытаюсь найтирешение этой проблемы, так что любая помощь будет очень признательна.
РЕДАКТИРОВАТЬ: Я провел еще несколько экспериментов и обнаружил, что если я переключаюсь на файловые сессии, все начинает работать такэто должно быть связано с хранением сеансов в базе данных.Я сделал переключение, используя руководство из Symfony Cookbook.Для справки вот соответствующие биты из моего config.yml:
framework:
session:
default_locale: %locale%
auto_start: true
storage_id: session.storage.pdo
parameters:
pdo.db_options:
db_table: session
db_id_col: session_id
db_data_col: session_value
db_time_col: session_time
session.storage.pdo:
class: Symfony\Component\HttpFoundation\SessionStorage\PdoSessionStorage
arguments: [@pdo, %session.storage.options%, %pdo.db_options%]
pdo:
class: PDO
arguments:
dsn: "mysql:dbname=%database_name%;host=%database_host%"
user: %database_user%
password: %database_password%
Все остальное в них выглядит нормально, так что, возможно, это ошибка в PdoSessionStorage