Отношения пользователей портят мои сеансы в Symfony2 - PullRequest
3 голосов
/ 28 сентября 2011

У моих пользователей настроен ряд отношений в Doctrine, но, в частности, одна из них вызывает у меня множество проблем, у каждого пользователя может быть несколько членств, и у каждого членства есть тип членства.

Дляоднако по какой-то причине, когда я загружаю эти членства, мне кажется, что это срывает мой сеанс, я вхожу в систему и получаю страницу «Ваша учетная запись», как я должен делать, но если я обновляю страницу, меня отправляют обратно на экран входа в систему.Мои сеансы хранятся в базе данных, поэтому я проверял их, чтобы увидеть, что происходит, и вот что я вижу:

  1. Сессия начинается пусто
  2. Я вхожу, но делаюуверен, что меня перенаправили на страницу, которая не загружает членство
  3. Сессия теперь содержит объект пользователя и всю информацию об отношениях
  4. Я захожу на «Ваш аккаунт», где загружаются членства, они отображаются правильно.
  5. Сеанс был обнулен и теперь стал таким же, как на шаге 1
  6. Я обновляю страницу и возвращаюсь на страницу входа

Я определилмой собственный пользовательский провайдер, и я заметил, что если я установил тип членства для каждого членства на 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

1 Ответ

0 голосов
/ 29 сентября 2011

Это может быть у вас метод равных, который слишком строг.если вы делаете $ user === $ otherUser;и объект изменился (отношение больше не является коллекцией с прокси), он вернул бы false.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...