0

目前,我们的产品用户在其内部网络上使用代理时遇到了一些问题。

根据他们的系统管理员的说法,代理对端口 80 和 443 是开放的,并且不会对 cookie 等做任何事情,只会阻止一些网站。

问题:当用户 X 登录到我们的应用程序时,用户 Y 也登录到以前没有使用过应用程序的计算机上(但在同一个代理后面)?!这不应该是可能的(使用 django 默认身份验证应用程序)?

我们使用的是 Apache、Nginx、Django 1.0 和 Postgresql。另请注意,它在使用 runserver 运行时确实有效,但不适用于 nginx。

这只发生在具有代理的用户身上,在其他网络上,它确实有效。

以前有人经历过吗?如果有,你是怎么解决的?

提前致谢!

斯特凡

4

1 回答 1

0

这可能是发送的缓存相关标头的问题,例如 Cache-Control。默认情况下,没有什么可以阻止代理缓存提供给登录用户的页面。通过发送 Cache-Control: private 或 Cache-Control: max-age=0,你告诉代理根本不要缓存页面,这是私有页面所需要的。

您可以使用每个视图的cache_page装饰器来控制它,或者通过设置CACHE_MIDDLEWARE_ANONYMOUS_ONLY =True 来完全禁用登录用户的缓存。当然,这可能会减慢您的页面速度,具体取决于它的复杂程度。在这种情况下,您可能需要考虑进行更细粒度的缓存。

于 2011-02-17T18:40:26.057 回答