jeesite集成cas之多點登出 -开发者知识库

jeesite集成cas之多點登出 -开发者知识库,第1张

接上一篇《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服務端網絡是單向的,客戶端能訪問服務端,服務端請求不了客戶端。所以說有時候如果網絡物理隔離的話,一定要注意網絡能不能連通的問題。



最佳答案:

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复