2011-03-29 85 views
1

如何增加Django管理員的不活動超時時間?默認情況下似乎非常短,並且在幾分鐘後似乎超時,這非常煩人。請注意,我知道SESSION_COOKIE_AGE,但我不希望此更改影響公共站點的超時。更改Django管理員不活動超時

+0

什麼活動超時?你的意思是你在幾分鐘後退出管理網站?如果是這樣,有什麼不對您的安裝 - 也許你的瀏覽器不正確存儲的cookie。 – 2011-03-29 16:07:03

+0

你用於會話後端的是什麼? – GDorn 2011-03-29 17:09:25

+0

@Roseman,除非Firefox,Chrome和IE全部破解,否則問題可能出在我的Django配置上。 – Cerin 2011-03-29 18:16:55

回答

0

所以,有兩個可能的原因。首先是你在到期前失去了會話。 SESSION_COOKIE_AGE默認爲2周。如果您的會話持續時間不長,請檢查以確保您的後端未使用緩存或緩存未滿(並因此會在時間之前觸發會話)。

您可以使用settings.SESSION_SAVE_EVERY_REQUEST強制刷新每個請求的會話,但這可能會在繁忙的站點上出現性能問題。

另一種可能性是,您已將SESSION_COOKIE_AGE設置爲有意的小事情,但您現在希望管理Cookie保持更長時間。沒有辦法將管理會話超時與普通用戶超時分開,至少開箱即用。

您也可以編寫一箇中間件,將用戶拉出請求,檢查user.is_staff,如果是,請調用request.session.set_expiry()手動推送過期時間。

0

完成不同會話超時設置的一種可能方式是運行您的站點的兩個實例。一說是隻有您可以訪問(在本地主機上運行:8080爲例)在管理頁面可用,並且有它的特殊admin_settings.py文件,您的常規網站,是公開的。

根據您的服務器設置,這可以通過Apache和VirtualHosts輕鬆完成(我不會詳細介紹,因爲您可能有不同的設置)。

然後,您可以使用SSH隧道訪問運行在服務器本地主機上的管理站點。

另一種選擇是,如果你真的不希望你的管理員網站一直在運行,可以使用manage.py runserver來運行你的網站實例,並傳入你的管理設置(因爲理想情況下只有你將訪問此,runserver應該能夠處理流量):

$ python manage.py runserver --settings=admin_settings localhost:8080 

然後通過SSH隧道進行訪問。如果你想避免用這種方法SSH隧道,那麼你可以考慮公開運行,但通過安全通道所概述here