2011-01-31 33 views
0

目前,我們的產品用戶在其內部網絡上使用代理服務器時遇到了一些問題。Django會話在代理服務器後面感到困惑,已經登錄

根據他們的系統管理員,該代理服務器對端口80和443開放,並且不會對cookie做任何事情,只會阻止某些站點。

問題:當用戶X登錄到我們的應用程序時,用戶Y也登錄了之前沒有使用過應用程序的計算機(但位於同一個代理之後)?這應該是不可能的(使用django默認身份驗證應用程序)?

我們使用的是Apache,Nginx,Django 1.0和Postgresql。另外請注意,它運行時與runserver運行,但不與nginx。

這隻發生在這個用戶與代理,在其他網絡上,它確實工作。

以前有沒有經歷過這個?如果是這樣,你怎麼解決它?

在此先感謝!

斯特凡

+0

我在Django 1.2.1上看到類似的行爲。我使用apache代理作爲負載平衡器。所有運行在同一個Windows盒子上。 – 2011-02-09 18:18:01

回答

0

這可能與發出的高速緩存相關的頭,例如緩存控制的問題。 默認情況下,沒有任何東西會阻止代理緩存提供給登錄用戶的頁面。通過發送Cache-Control:private或Cache-Control:max-age = 0,您可以告訴代理不要緩存專用頁面所需的頁面。

您可以使用cache_page裝飾工具進行控制, 或設置CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True以完全禁用登錄用戶的緩存。當然,這可能會減慢你的頁面,取決於它的複雜程度。在這種情況下,您可能想要考慮進行更細粒度的緩存。