(二)SSO之CAS框架單點退出,自定義退出界面.


用CAS的退出,只能使用它自己的那個退出界面,如果有這樣的要求, 要求退出后自動跳轉到登錄界面, 該如何做呢?下面這篇文章實現了退出后可以自定義跳轉界面. 
用了CAS,發現退出真是個麻煩事,退出后跳轉到了CAS的注銷頁面,而且不關閉瀏覽器的話,其實並沒有真的退出,輸入地址仍是登陸狀態。為了實現退出后登陸到跳轉頁面,做了以下配置:
 
1.server 端
 
修改src\main\webapp\WEB-INF\cas-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的配置. 這樣才能成功跳轉到你退出登錄后想要跳轉到的界面.

 
經過測試,可以實現所要的功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM