由于项目需求要实现单点登出需要在网上找了N久终于实现单点登出。
使用cas-server-core-3.3.3.jar(CAS Server 3.3.3)
使用cas-client-core-3.1.3.jar(CAS Client 3.1.3)
项目结合CAS SpringSecurity SSH
普通项目(没有结合Spring Security)的可以在web.xml中加入如下代码
在我们的项目中由于结合了SpringSecurity 可以将filter加入到spring Security过滤链中,也可以直接向上面的一样加入web.xml中
首先在web.xml中加入监听器。
然后把filter加入到spring Security过滤链中
注意上面的class="check.SingleSignOutFilter"是我自定义的filter(由于CAS3.1.3定义的SingleSignOutFilter在某种意思上没有起到作用)详情请见http://www.javaeye.com/topic/546785
自己定义一个类
完成。
这样即可实现单点登出。(所有java应用的单点退出)
1)这样实现的效果是在登出的时候CAS Server 分发给各个客户端让各个客户端都登出,这个得让FIlter来获取,例子:一个index页面有两个链接一个指向java应用,一个指向php应用在java应用加filter 后能做出相应的动作退出动作,而对于php自己没加任何filter就没有退出。所以也得写个filter。
2)由于我们点击退出的时候请求CAS Server 而后Server分发任务让每个应用退出的消息,java程序通过filter来执行退出。PHP提供了一个phpCAS::handleLogoutRequests()来检验服务器发来的信息,
具体我们可以把这个代码放在phpbb3/include/function.php中的点击事件里面代码如下: