参考: http://howiefh.github.io/2015/05/19/shiro-cas-single-sign-on/?utm_source=tuicool&utm_medium=referral
如题,现象就是A执行退出,A确实退出了,但B依然可用。 换成B也一样,B退出了,A依然可用。
原因是SessionManager使用了DefaultWebSessionManager,也就是shiro自己管理Session,
而单点退出的Servlet只处理了容器默认的session,shiro管理的session没管。
解决办法: (1)不用DefaultWebSessionManager,改成ServletContainerSessionManager,由容器管理session,自然就没问题了。
(2)坚持用DefaultWebSessionManager,那么就得自己改 org.jasig.cas.client.session.SingleSignOutFilter、 SingleSignOutHandler和SessionMappingStorage。
原理比较简单,创建token时,把session存起来,单点退出时,把session取出来,无效掉。
修改的话,怎么改?
|