我有一个kohana (php)网站,当本地网络上的计算机在代理下使用会话时,我们遇到了一个问题。
问题: PC 1和PC 2在同一个本地网络中。他们使用代理服务器来访问外部网站。PC1使用“用户A”访问网站,他现在在主页上,网站显示“已连接到用户A”。PC2进入网站并以“用户B”访问,他现在在主页上,网站显示“已连接到用户B”。PC1按F5重新加载站点主页,站点现在显示它是以“用户B”登录的。
系统是从外部安装的,只有在这个代理网络下才会出现这个问题。也在本地网络(但无代理)下的其它PC的访问不存在此问题。
我们启用了身份验证模块中的"user_token“部分(它使用一个名为"user_tokens”的新表,该表使用浏览器用户代理),但问题仍然存在。
-- edit --我们使用Kohana 3.0、PHP 5.2.9和postgres 8.4
发布于 2011-05-24 18:13:23
你的代理支持缓存吗?它应该而不是缓存页,这些缓存页在客户端登录时是不同的。
您的应用程序可能必须设置适当的HTTP标头,以告知代理它不允许缓存HTTP响应。
如果这不能解决问题,请确保您没有使用客户端IP地址作为会话密钥。(如果您仍然喜欢使用IP,请为允许的代理创建白名单,然后使用HTTP forwarded_for头。它只会解决你信任的代理的问题。)
发布于 2011-05-24 18:03:18
您能否暂时关闭代理以确认此问题?
您可以尝试使用Firefox和Firebug扩展来访问该站点吗?这将让您看到从该站点发送的确切HTTP响应代码和标头。知道它们是什么将有助于我们为您诊断问题。
https://stackoverflow.com/questions/6100436
复制相似问题