jeesite集成cas之多點登出 -开发者知识库
接上一篇《jeesite集成cas》整理一下多點登出的集成。
實現多點退出(即任意客戶端cas退出所有客戶端均退出)
1)重寫casFilter過濾器
package com.sinosoft.modules.sys.security; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import org.apache.shiro.cas.CasFilter; import org.jasig.cas.client.session.SingleSignOutHandler; public class MyCasFilter extends CasFilter { SingleSignOutHandler handler = new SingleSignOutHandler(); @Override protected void postHandle(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception { final HttpServletRequest request = (HttpServletRequest) servletRequest; if (handler.isTokenRequest(request)) { handler.recordSession(request); } else if (handler.isLogoutRequest(request)) { handler.destroySession(request); System.out.println("===============LOGOUT================="); return; } else { System.out.println("Ignoring URI " request.getRequestURI()); } super.postHandle(servletRequest, servletResponse); } }
2)修改 spring-context-shiro.xml
<!-- CAS認證過濾器 --> <bean id="casFilter" class="com.sinosoft.modules.sys.security.MyCasFilter"> <property name="failureUrl" value="${adminPath}/login"/> </bean>
3)配置web.xml
增加
<listener> <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class> </listener>
填坑提示:集成的時候,一直收不到cas服務端的廣播,以為集成的問題,各種改,最后發現cas客戶端和cas服務端網絡是單向的,客戶端能訪問服務端,服務端請求不了客戶端。所以說有時候如果網絡物理隔離的話,一定要注意網絡能不能連通的問題。
最佳答案:
本文经用户投稿或网站收集转载,如有侵权请联系本站。