(二)SSO之CAS框架单点退出,自定义退出界面.

用CAS的退出,只能使用它自己的那个退出界面,如果有这样的要求, 要求退出后自动跳转到登录界面, 该如何做呢?下面这篇文章实现了退出后可以自定义跳转界面. 
用了CAS,发现退出真是个麻烦事,退出后跳转到了CAS的注销页面,而且不关闭浏览器的话,其实并没有真的退出,输入地址仍是登陆状态。为了实现退出后登陆到跳转页面,做了以下配置:
 
1.server 端
 
修改srcmainwebappWEB-INFcas-servlet.xml里的logoutController
增加p:followServiceRedirects="true"使支持logout输入service参数为跳转路径。
 
<bean id="logoutController" class="org.jasig.cas.web.LogoutController"  
p:centralAuthenticationService-ref="centralAuthenticationService"  
p:logoutView="casLogoutView"  
p:warnCookieGenerator-ref="warnCookieGenerator"  
p:ticketGrantingTicketCookieGenerator-ref="ticketGrantingTicketCookieGenerator"   
p:followServiceRedirects="true"  
/>  

2.客户端

web.xml 中在登录的filter之前增加
 
<!-- 填写退出的URL -->  
  <context-param>  
    <param-name>casServerLogoutUrl</param-name>  
    <param-value>http://10.1.83.34:8080/cas/logout</param-value>  
  </context-param>  
   <!--单点退出配置-->  
    <listener>  
    <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>  
</listener>   
<filter>  
   <filter-name>CAS Single Sign Out Filter</filter-name>  
   <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>  
</filter>  
<filter-mapping>  
   <filter-name>CAS Single Sign Out Filter</filter-name>  
   <url-pattern>/*</url-pattern>  
</filter-mapping>  

在JSP中,如果直接把退出转到cas/logout之后,会跳转到CAS的注销页面,这个情况下,如果直接点击浏览器的回退按钮,发现仍然可以正常操作,也就是session并没有被注销掉,可能CAS的logout只是去掉了TGT吧。

为了解决这个问题,我只好重新写了个JSP,退出按钮跳转到这个JSP,这个JSP里先注销session, 然后再跳转到CAS的退出,并增加service参数,使跳转到登陆页面。
<a  
    href="${pageContext.request.contextPath}/web-root/include/logout.jsp" ></a>  
<div id="box_T5" class="toptaps5">退出登录</div>  

logout.jsp内容:

<body>  
<%  
session.invalidate();  
response.sendRedirect(application  
.getInitParameter("casServerLogoutUrl")  
+ "?service="  
+ application.getInitParameter("serverName") + "/myweb");  
%>  
</body>  

说明:"/myweb"就是你退出后默认转到的界面, application.getInitParameter,需要自己在web.xml中加入context-parameter的配置. 这样才能成功跳转到你退出登录后想要跳转到的界面.

 
经过测试,可以实现所要的功能。
原文地址:https://www.cnblogs.com/yangmengdx3/p/4565318.html