CAS单点登出:二

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,为了初始化服务器列表。(集群环境用逗号隔开)
  1. <filter>
  2. <filter-name>CAS Single Sign Out Filter</filter-name>
  3. <filter-class>com.yixin.platform.logout.NewSingleSignOutFilter</filter-class>
  4. <init-param>
  5. <param-name>casServerUrlPrefix</param-name>
  6. <param-value>${casServerUrlPrefix}</param-value>
  7. </init-param>
  8. <init-param>
  9. <param-name>casServerList</param-name>
  10. <param-value>${casServerList}</param-value>
  11. <!--eg: http://localhost:8097/platform-web/shiro-cas,http://localhost:8097/platform-web/shiro-cas -->
  12. </init-param>
复制代码




附:注意事项:在NewSingleSignOutFilter.java中引用了另外的2个类,所以请注意修改 import 包的地址,根据实际情况来~~~~


3个类的下载地址 http://download.youkuaiyun.com/download/qq_32143169/10012327


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值