官網下載連接:前端
https://github.com/apereo/cas-overlay-template/tree/4.2git
一、下載的文件爲:cas-overlay-template-4.2.zipgithub
解壓後,獲得文件夾:cas-overlay-template-4.2web
文件夾內容爲:spring
而後將文件夾複製到idea的工做空間(直接用idea在此位置打開也能夠,只是我有一個專用的編輯空間),並更名爲:cas-4.2json
二、使用idea打開項目後端
選擇菜單:file——>open,而後在彈窗中選擇解壓的或者複製的文件夾,OK結束tomcat
而後等待項目下載依賴文件。app
三、因爲此項目使用運行時的依賴,因此預編譯時會報大量錯誤,但不影響編譯運行。前後端分離
在項目名上右鍵,選擇run maven——>install
而後會在target目錄中生成war包。
安裝後的目錄:
將war包放入tomcat目錄下的webapps中,啓動tomcat就可訪問cas server了
localhost:8080/cas
默認的用戶名/密碼是:casuser/Mellon
一、認證明現的修改
Cas的認證接口是:AuthenticationHandler
Cas也提供了一些實現,而後不想介入cas源碼太深,因此直接寫了一個類實現AuthenticationHandler,也能夠直接繼承一些抽象類或者實現類。
個人實現類:SCASAuthenticationHandler,主要實現其中authenticate方法,其餘方法能夠模仿其餘實現。
而後登錄頁面除了帳戶和密碼兩個參數外,若是還有其餘參數,也能夠再繼承另外一個類UsernamePasswordCredential,而後再子類中添加本身須要的參數屬性。
個人子類:SSaturnCredential
認證明現和登錄數據對象準備好後,再更改cas配置文件,使單點登陸系統引用咱們本身的實現。
二、首先更改deployerConfigContext.xml文件,在其中找到
<alias name="acceptUsersAuthenticationHandler" alias="primaryAuthenticationHandler" />
而後在下方添加acceptUsersAuthenticationHandler的bean:
<bean id="acceptUsersAuthenticationHandler" class="com.xxx.xxx.SCASAuthenticationHandler"/>
也就是咱們本身的認證處理器SCASAuthenticationHandler。
三、再修改流程定義文件:login-webflow.xml
找到<var name="credential"
class="org.jasig.cas.authentication.UsernamePasswordCredential"/>
把他註釋掉,再添加bean
<var name="credential" class="com.xxx.xxx.credential.SSaturnCredential"/>
也就是咱們本身定義的登錄數據接收對象。
四、若是登錄頁中添加了其餘參數,則須要在login-webflow.xml流程文件中配置
找到id=「viewLoginForm」視圖節點,而後在binding空間中綁定新增的參數屬性,自定義的數據對象中必定要有此屬性,或者也能夠將required設爲false,意思是此參數不是必須傳入的。
四、將咱們改動過的兩個或三個文件放入WebContent下的相同目錄中(必定要是相同目錄,若是缺乏相關路徑手動創建),這樣使用maven install時,就會根據pom中配置的overlay插件,用咱們改動的文件覆蓋掉cas原來的配置文件。
5.一、在web.xml中找到cas的dispatcherServlet,而後添加其餘功能controller的路徑映射,使前端控制器能夠攔截到。例如:controller中註冊方法被@RequestMapping("/account/register")註釋,則在添加如下servlet-mapping:
5.二、找到路徑和處理器的映射配置:
cas不一樣版本之間,此類的bean配置地點不一樣,cas4.2.X是在applicationContext.xml配置的
如圖在<util:properties>空間中添加屬性<prop key="/account/*">accountController</prop>
5.三、在spring容器中加載accountController的bean,或者使用註釋掃描均可以。
一、分析登錄流程,知道登錄成功後會展現成功頁面,以下配置
使其不展現頁面,則修改成:
原理:將view屬性中的頁面名更改成一個重定向,重定向到一個自定義的controller中(controller的地址須要在handlermapping中配置),而後利用respondbody註解向前臺返回json字符串。