2010-09-02 5 views
6

사용자가 내 도메인을 방문하면 django가 sessionid를 발행합니다. 페이스 북으로 Oauth를 시도 할 때 그는 Facebook.com으로 리디렉션되는 내 사이트의 버튼을 클릭합니다. Facebook은 내 도메인으로 다시 리디렉션하지만,이 시점에서 사용자의 세션은 손실되고 Django는 새로운 세션 변수를 발행하는 것처럼 보입니다.다른 도메인에서 리디렉션 될 때 장고 세션이 끊어짐

내 사이트의 방문자를 Facebook 계정으로 연결해야하기 때문에 삭제 된 세션을 유지하고 싶지만 세션을 삭제하면 로그인 한 사용자가 로그 아웃됩니다.

이것이 장고의 XSS 보호와 관련된 동작 일 수 있습니다. 사용자가 Facebook 사이트에 로그인 할 때 사용자 정보를 계속 유지하려면 어떻게해야합니까?

+0

문제가 http://docs.djangoproject.com/en/1.2/topics/http/sessions/#browser-length-sessions-vs-persistent-sessions와 관련이 있습니까? 또한 세션이 삭제되도록 정의하십시오. '사용자'에게 여전히 쿠키가 있습니까? – cpf

+0

세션을 삭제하면 원래 세션 ID 쿠키가 지워지고 새 세션 ID 쿠키로 바뀝니다. 링크를 제공해 주셔서 감사합니다. 사용자가 새 사이트를 방문하여 원래 도메인으로 돌아 가면 세션을 지워서는 안됩니다. – Mark

답변

9

쿠키를 만들 때 쿠키가 동일한 도메인인지 확인하고자 할 수 있습니다. 때때로 문제가 발생할 수 있습니다. 웹 사이트 www.example.com을 방문하고 OAuth 콜백이 example.com을 가리키면 www.example.com과 example.com을위한 두 개의 개별 쿠키가있을 수 있습니다.

브라우저에서 "항상 확인"을 클릭하고 쿠키 정보에주의하십시오. "Host :"필드 값이 동일한 지 확인하십시오.

settings.py 파일에 SESSION_COOKIE_DOMAIN에 대해 .example.com과 같은 내용이 입력됩니다.

+0

당신의 제안을 시도했는데 문제가 해결 된 것 같습니다. 고마워요! – Mark

+0

2 시간 x_x와 (과) 같이 붙어 있습니다. 솔루션을 가져 주셔서 감사합니다! – Weaver

+2

'localhost'에서 시작해서'127.0.0.1'로 돌아 왔기 때문에 이런 일이 일어났습니다. – Seth

2

동일한 도메인에서 실행되는 Django 응용 프로그램이 2 개있는 경우 쿠키 충돌을 피하기 위해 각각에 대해 SESSION_COOKIE_NAME을 (를) 설정하는 것이 좋습니다.

관련 문제