CAS單點登出實現案例

單點登出的實現比較簡單,就是簡單的幾個配置。web

若是直接調用cas的logout的url進行登出,則會暴露cas的登出界面ajax

顯然這不是咱們想要的,一般登出的需求是:退出當前帳戶,而後將url重定向到登陸界面。服務器

因而我用了一個蠢笨的方式來實現:session

乾貨模式開啓:app

一、在頁面的退出按鈕下的functionpost

function fn_logout(){
	  
       $.ajax({
           url:"../user/logout",
           type:'post'
       });
       window.location.href="https://cas.demo.com:8443/cas/logout?service=http://127.0.0.1:8089/portal/user/login";
   }

老規矩,貼圖片詳解url

二、而後我把Controller裏的logout方法貼出來code

@RequestMapping("logout")
	public void logout(HttpSession session) {
        //清楚session相關記錄
		session.removeAttribute("admin");
        session.removeAttribute(com.common.util.SessionListener.LISTENER_NAME);
	}

三、進行cas服務器配置文件的修改  cas\WEB-INF\cas-servlet.xmlxml

<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:servicesManager-ref="servicesManager"
        p:followServiceRedirects="${cas.logout.followServiceRedirects:true}"/>

注意最後一行的p:followServiceRedirects="${cas.logout.followServiceRedirects:true}"本來屬性爲false。圖片

意思是:成功Logout後,若是包含Service參數,則重定向到Service指定的網址。

這樣就能夠在頁面logout的時候,同時清理掉當前用戶的session,又redirect到當前系統的登陸界面,從而省去了caslogout頁面的修改或單純的實現:登出後釋放當前用戶的session,跳轉到系統登陸界面。

相關文章
相關標籤/搜索