fhzh0 2013-04-12
问题描述:cas登出的时候,发现第二个用户登录打开的session数据是之前用户的,用户session在退出的时候没有清除。
问题环境:应用服务器用apache的反向代理做了负载均衡。
参考:
https://issues.jasig.org/browse/CAS-832
https://issues.jasig.org/browse/CAS-742
分析:cas需要通知用户登录过的所有casclient,但目前cascore代码没有地方存储需要通知后台服务器的url,导致casclient没有正确的通知到。
方案:casserver通知所有负载后的casclient,实现可以根据负载的实现不同而不同,比如我用的负载是通过记录route来区分的,在org.jasig.cas.util.HttpClient的每一次call方法里面对所有casclient的connection请求session中加入routeid.