请教代理服务器缓存与J2EE应用帐户错乱的问题!

09-03-31 greentree
请教代理服务器缓存与J2EE应用帐户错乱的问题!

我现在写好了一个Struts2 的项目,应用服务器是jboss,前端用了一个apache,应用放在公网上给客户使用!但是客户的网络情况是,

客户使用WINROUNTE代理上网的!

而,我的程序里面,就在客户正常从登陆的窗口进入系统的,进入以后会产生一堆的session来标志他的身份的,退出的时候直接关闭ie!我设置的session过期时间为20分钟!

可是现在出现的问题郁闷死了!就是如果有两个人同时在这个分支结构里面使用同一个代理服务器进行上网,访问我的这个程序的服务器,结果出现Session的混乱,有时候拿自己的用户名登陆进去,结果发现使用的是别人的权限!

而且,我已经经过了试验,如果客户的机器上面取消那个代理服务器的设置,直接去访问服务器,,使用网关的话!!就一切没有问题,完全的没有问题!但是现在关键就是这个代理服务器上面出现了问题,好像Session总是乱套了!!!

我分析了一下:

理论上,如果代理仅仅是作为代理(而不进行缓存),那么Session/Cookie是不可能受影响的。因为无论是否Cookieless的Session,都与IP无关,而是直接在浏览器作记录的,代理对于这个过程来说是透明的。

我唯一的估计就是客户的代理进行了“过分”的缓存,例如缓存Post的表单或者Cookies,导致Session混乱。如果代理不缓存,或者对于Post不缓存,应该没问题的

但是我们是不可能调整客户的代理服务器设置的,这就要求我们必须在公网上的服务器应用中做一些设置.我们把apache设置为不过期,确实是管用了一段时间,但是最近又出现了这种情况.看样子解决的不彻底.

请教各位大侠有什么好的建议没有,能够从程序上防止这个事情的出现呢!!各位,真的是着急的,请多指教阿!!

    

1
greentree
2009-03-31 13:43
这种问题蛮让人头痛的,还请各位大哥多提宝贵建议!

greentree
2009-03-31 14:16
后来想起来3种解决方式:

1:URL重写

2:每个URL后面都跟上一个随机数字,可以解决但是有点丑陋

3:升级为https

还请各位大哥提出一些解决的办法!

greentree
2009-04-01 13:23
希望碰到同样问题的朋友能够出来讨论讨论,集中大家的智慧一起解决这样的烦恼!

banq
2009-04-01 15:27
Session有几种识别方式,其中一个就是通过URL重写,也就是在URL附上sessionID。这个应该通过tomcat或一些插件就能够容易实现。

猜你喜欢