2011-03-29 81 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