当用户登陆成功后,点登出后,系统并没有完全登出,因为j_acegi_logout销毁的只是acegi客户端的Authentication对象,但是,如果不关闭页面的情况下,重新打开之前访问的受保护的页面,由于org.acegisecurity.ui.cas.CasProcessingFilter这个过滤器会重新找到登录时CAS的票根,因为客户端并没有通过https的形式退出,所以CAS服务器端并没有销毁票根。当获取到票根后,又会重新生成Authentication这个对象,所以,就算是点击了退出,也并没有退出。解决办法是,在acegi的logout这个过滤器中,将constructor-arg设置成<constructor-arg value="https://www-9a5718d7b04:8443/cas/logout"/>,这样,当用户点击退出后,首先到客户端的acegi的logout过滤器处理,将Authentication这个对象销毁,然后在到https://www-9a5718d7b04:8443/cas/logout处理CAS服务器端的销毁票根等操作,这样,就完全销毁了这个用户的权限和票根,完成完全退出操作。
acegi和cas整合的退出问题
最新推荐文章于 2019-01-09 15:18:39 发布