CAS单点登出问题及解决 二 (文章摘自笔者发在自己公司内部论坛的文章:谢绝转载)
背景:基于CAS单点登出 双击问题,第一部CAS单点登出一未实现,所以拍摄了第二部~~~
原因:在单机的情况下,cas-server会发送登出请求到cas-client,cas-client会过滤到登出请求,然后清除tomcat的session。在集群模式下,只有一台cas-client能过滤到cas-server发过来的请求,所以cas-client的登出有很大几率会失败!
解决方案:
1:cas-server连续发送5次。这种情况下,虽然很大几率使每个cas-client都能过滤到登出请求,但是还是存在侥幸的现象。(排除)
2: IP绑定 ip_hash,这样每个访客固定访问一个后端服务器,这样会固定死了负载规则!(排除)
3: 在第一个接收到登出请求的cas-client,向其它几台cas-client发送登出请求!
操作:1>引入三个类HttpClient.java,NewSingleSignOutFilter.java,SimpleHttpClient.java (附件)

2>修改 CAS Single Sign Out Filter 过滤器,使用我们新加入工程的NewSingleSignOutFilter.java。
新加入一个初始化参数casServerList,为了初始化服务器列表。(集群环境用逗号隔开)
附:注意事项:在NewSingleSignOutFilter.java中引用了另外的2个类,所以请注意修改 import 包的地址,根据实际情况来~~~~
3个类的下载地址 http://download.youkuaiyun.com/download/qq_32143169/10012327