目前,我们的产品用户在其内部网络上使用代理时遇到了一些问题。
根据他们的系统管理员,代理对端口80和443开放,并且不对cookie做任何事情,只会阻止某些网站。
问题:当用户X登录我们的应用程序时,用户Y也会登录到之前没有使用过应用程序的计算机上(但是在同一个代理服务器后面)?这应该是不可能的(使用django默认的auth app)?
我们使用的是Apache,Nginx,Django 1.0和Postgresql。另请注意,使用runserver运行时可以正常工作,但不能使用nginx。
仅当此用户使用代理时才会发生这种情况,在其他网络上,它确实有效。
以前有人经历过这个吗?如果是这样,你怎么解决它?
提前致谢!
的Stefan
答案 0 :(得分:0)
这可能是发送的缓存相关标头的问题,例如Cache-Control。 默认情况下,没有任何内容可以阻止代理缓存提供给登录用户的页面。通过发送Cache-Control:private或Cache-Control:max-age = 0,您可以告诉代理不要缓存页面,这是私有页面所需要的。
您可以使用cache_page装饰器每个视图来控制它, 或者通过设置CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True来完全禁用已登录用户的缓存。当然,这会降低您的页面速度,具体取决于它的复杂程度。在这种情况下,您可能希望进行更细粒度的缓存。