2011-09-28 4 views
3

내 사용자는 Doctrine에서 많은 관계 설정을했는데 특히 문제가 많은 것으로 보입니다. 각 사용자는 여러 명의 회원을 가질 수 있으며 각 멤버쉽에는 회원 유형이 있습니다 .사용자 관계로 인해 Symfony2에서 내 세션이 손상됩니다.

그러나 어떤 이유로 회원 자격을로드 할 때 내 세션이 누크 인 것 같습니다. 로그인해야하고 "내 계정"페이지가 표시되어야합니다.하지만 페이지를 새로 고치면 다시 로그인으로 전송됩니다. 화면. 내 세션은 내가 어떻게되는지를 확인했습니다 데이터베이스에 저장되고이 제가 보는 것입니다 :

  1. 세션 시작은 빈
  2. I 로그인하지만 확실히 내가로 리디렉션 할 멤버십을로드하지 않는 페이지
  3. 세션에 이제 사용자 개체와 관계에 대한 모든 정보가 포함됩니다.
  4. 회원 자격을로드하는 "내 계정"을 방문하면 올바르게 표시됩니다.
  5. 세션은 핵 공격하고 단계 있다는 1
  6. 내가 페이지를 새로 고침 나는 내 자신의 사용자 제공자를 정의한

로그인 페이지로 다시 전송받을 지금 내가 만약 내가 발견되었습니다 refreshUser에서 각 멤버십의 멤버십 유형을 null로 설정하면 작업이 시작되어 세션이 그 관계에 문제가 있다고 생각할 수 있습니다.

저는이 문제에 대한 해결책을 찾기 위해 정말 고심하고 있습니다. 도움이된다면 정말 감사하겠습니다.

EDIT : 좀 더 실험을하고 파일 세션으로 전환하면 모든 것이 작동하기 때문에 데이터베이스에 세션을 저장하는 것과 관련이 있어야합니다. 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

답변

0

너무 엄격한 방법을 동일에 그것은 될 수있는 버그 그래서 아마 잘 보인다. 당신이 $ user === $ otherUser를한다면; 그리고 객체가 변경된 경우 (관계가 더 이상 프록시가있는 콜렉션이 아님) false를 반환합니다.

+0

안녕하세요 헨릭, 그럴 것 같지 않습니다. 현재 나의 equals check는 단지 id를 비교하는 것입니다. (나중에 개선하기를 바랄 것입니다.) 나는 모든 응답을 로깅 해봤습니다. 그리고 항상 true를 리턴합니다. – pogo

관련 문제