首先說明一下,正常的單點登陸應該都是訪問客戶端,然後跳轉到cas服務器驗證登陸之後,返回到客戶端原來的地址,
這個是通過參數service來實現的,我們返回沒有客戶端跳轉到cas server登陸頁的時候地址欄裏都會跟有這個參數。這個參數就是控制重定向的。
但是如果我們直接訪問server端登陸,它的這個參數是空的,所以cas給了一個默認的頁面 casGenericSuccessView.jsp 所以登陸之後就跳轉到這裏了。
但是實際需求是通過cas server 登陸之後直接跳轉到摸一個客戶端,解決辦法:
將要跳轉的客戶端url當作參數傳到後臺(參考https://mp.csdn.net/postedit/83744386),然後修改登陸成功之後的流程,讓它做跳轉即可:
修改前:
<end-state id="viewGenericLoginSuccess" view="casGenericSuccessView">
<on-entry>
<evaluate expression="genericSuccessViewAction.getAuthenticationPrincipal(flowScope.ticketGrantingTicketId)"
result="requestScope.principal"
result-type="org.jasig.cas.authentication.principal.Principal"/>
</on-entry>
</end-state>
修改後:
<end-state id="viewGenericLoginSuccess" view="externalRedirect:#{flowScope.credential.sys_url}" />
flowScope.credential.sys_url就是我們要跳轉的客戶端url