Python 更改Django管理不活动超时

Python 更改Django管理不活动超时,python,django,django-admin,security,Python,Django,Django Admin,Security,如何增加Django管理员的非活动超时?默认值似乎非常短,并且在几分钟后就超时,这非常烦人。注意,我知道,但我不想让此更改影响公共站点的超时。因此,有两个可能的原因。第一个问题是,在会话到期之前,您正在丢失会话。会话时间默认为2周。如果会话没有持续那么长时间,请检查以确保后端未使用缓存或缓存未满(从而在会话到期之前中断会话) 您可以使用settings.session\u SAVE\u every\u request强制在每次请求时刷新会话,但在繁忙的站点上可能会出现性能问题 另一种可能是您故意

如何增加Django管理员的非活动超时?默认值似乎非常短,并且在几分钟后就超时,这非常烦人。注意,我知道,但我不想让此更改影响公共站点的超时。

因此,有两个可能的原因。第一个问题是,在会话到期之前,您正在丢失会话。会话时间默认为2周。如果会话没有持续那么长时间,请检查以确保后端未使用缓存或缓存未满(从而在会话到期之前中断会话)

您可以使用settings.session\u SAVE\u every\u request强制在每次请求时刷新会话,但在繁忙的站点上可能会出现性能问题

另一种可能是您故意将会话\u COOKIE\u AGE设置为较小的值,但现在您希望管理COOKIE的持续时间更长。没有办法将管理会话超时与正常用户超时分开,至少是开箱即用


您还可以编写一个中间件,将用户从请求中拉出来,检查user.is\u staff,如果是,则调用request.session.set\u expiry()手动将过期时间推出来

完成不同会话超时设置的一种可能方法是运行站点的两个实例。只有在管理员页面可用且具有特定的admin_settings.py文件的情况下(例如,在localhost:8080上运行),您才能访问该页面,并且您的常规站点是公开的

根据您的服务器设置,使用Apache和VirtualHosts可以很容易地完成这项工作(由于您可能有不同的设置,所以我不会详细介绍)

然后,您可以使用SSH隧道访问在服务器的本地主机上运行的管理站点

另一种选择是,如果您真的不想让管理员站点一直运行,则使用manage.py runserver运行站点实例,并为其传递管理员设置(因为理想情况下只有您才能访问该站点,runserver应该能够处理流量):


然后通过SSH隧道访问它。如果您希望使用此方法避免SSH隧道,那么您可以考虑公开运行它,但是通过stunnel(如所述)

什么活动超时?你的意思是说你在几分钟后就从管理员网站上注销了吗?如果是这样,则说明您的设置有问题-可能是您的浏览器没有正确存储cookie。会话后端使用的是什么?@Roseman,除非Firefox、Chrome和IE都已损坏,否则问题可能出在我的Django配置上。@GDorn,我使用的是默认设置,我相信是Django.contrib.sessions.backends.db
$ python manage.py runserver --settings=admin_settings localhost:8080