2011-01-31 3 views
0

현재 내부 네트워크에서 프록시를 사용하는 Google 제품 사용자에게 문제가 있습니다.Django 세션이 프록시 뒤에 혼동되어 이미 로그인했습니다.

시스템 관리자에 따르면 프록시는 포트 80 및 443에 개방되어 있으며 쿠키 등으로는 아무 것도 수행하지 않으며 일부 사이트 만 차단합니다.

문제 : 사용자 X가 응용 프로그램에 로그인하면 사용자 Y도 이전에 응용 프로그램을 사용하지 않은 컴퓨터 (동일한 프록시 뒤에 있음)에 로그인됩니다. 이것은 불가능합니다 (django 기본 인증 앱이 사용됩니다)?

우리는 Apache, Nginx, Django 1.0 및 Postgresql을 사용하고 있습니다. 또한 runserver와 함께 실행될 때는 작동하지만 nginx에서는 작동하지 않습니다.

이것은 프록시가있는이 사용자와 만 발생하며 다른 네트워크에서는 작동합니다.

누구나 전에 경험 했습니까? 그렇다면 어떻게 해결 했습니까?

미리 감사드립니다.

스테판

+0

Django 1.2.1에서 비슷한 동작이 나타납니다. 나는 아파치 프록시를로드 밸런서로 사용하고있다. 모두 동일한 Windows 상자에서 실행됩니다. –

+0

우리는이 문제를 발견했습니다. 'on'으로 설정된 gzip_proxy라는 wsgi 설정이 있는데, 'off'로 설정하면 문제가 해결됩니다. 어쨌든 시간을내어 주셔서 감사합니다 :-) – Bennie

+0

Nginx 설정은 다음과 같습니다. – Bennie

답변

0

이 예 캐시 제어를위한 발송 캐시 관련 헤더에 문제가있을 수 있습니다. 기본적으로 로그인 된 사용자에게 제공된 페이지를 캐싱하는 프록시가 프록시를 중지하지 않습니다. Cache-Control : private 또는 Cache-Control : max-age = 0을 전송하면 프록시가 비공개 페이지에 필요한 페이지를 캐시하지 않도록 지시합니다.

데코레이터 cache_page으로 제어하거나 CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True로 설정하여 로그인 한 사용자의 캐싱을 완전히 비활성화 할 수 있습니다. 물론, 이것이 얼마나 복잡한 지에 따라 페이지 속도가 느려질 수 있습니다. 이 경우 더 세분화 된 캐싱을 수행하는 것이 좋습니다.