首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

CAS 無侵入改造實戰:Maven Overlay 實現客製化單點登錄服務端

     編輯:Java 綜合教學

CAS 服務端客製化:Maven Overlay 實現零侵入改造

痛點背景

  • 傳統做法:直接修改 cas-server-webapp 源碼,升級版本時改動難合併、維護者換人即斷檔。
  • Overlay 方案:建立獨立項目 my-cas-server,以 cas-server-webapp 為 WAR 依賴,通過 Maven War Plugin 的 <overlays> 覆蓋同名文件,實現「不改源碼、配置即代碼、升級無感」。

步驟 1:創建 my-cas-server 項目

pom.xml 核心依賴


<dependencies>
    <dependency>
        <groupId>org.jasig.cas</groupId>
        <artifactId>cas-server-webapp</artifactId>
        <version>3.4.11</version>
        <type>war</type>
        <scope>runtime</scope>
    </dependency>
</dependencies>

步驟 2:配置 Overlay


<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <configuration>
                <overlays>
                    <overlay>
                        <groupId>org.jasig.cas</groupId>
                        <artifactId>cas-server-webapp</artifactId>
                    </overlay>
                </overlays>
            </configuration>
        </plugin>
    </plugins>
</build>

原理:打包時先解壓依賴 WAR,再將本項目同名文件覆蓋過去,最終產出合併後的 WAR。

步驟 3:複製並修改需覆蓋的文件

將原項目中已修改的文件按相同目錄結構複製到 my-cas-server/src/main/webapp/...:


src/main/
├── java/
│   └── org/jasig/cas/
│       ├── authentication/principal/UsernamePasswordCredentials.java
│       └── web/flow/AuthenticationViaFormAction.java
└── webapp/
    ├── WEB-INF/
    │   ├── classes/
    │   │   ├── cas-theme-default.properties
    │   │   ├── default_views.properties
    │   │   └── messages_zh_CN.properties
    │   ├── spring-configuration/ticketRegistry.xml
    │   ├── cas-servlet.xml
    │   ├── deployerConfigContext.xml
    │   ├── login-webflow.xml
    │   └── web.xml
    └── view/jsp/default/ui/casLoginView.jsp  (自定義登錄頁)

步驟 4:啟動驗證

  1. mvn clean package 生成 my-cas-server.war
  2. 部署至 Tomcat,訪問登錄頁,功能與原改造版一致

進階:登錄頁美化實戰

  1. 在 src/main/webapp/WEB-INF/jsp/login.jsp 編寫全新頁面
  2. 修改 default_views.properties:
    casLoginView.url=/WEB-INF/jsp/login.jsp
  3. 重新打包部署,即見新版登錄界面

Overlay 優勢總結

維度傳統改源碼Maven Overlay
升級成本極高(手工合併)低(升級版本號即可)
版本控制混雜在 fork 代碼中僅保留差異文件,Git 歷史清晰
團隊協作新人難上手標準 Maven 項目,零學習成本
自由度受限於原項目結構任意新增 Controller、JSP、Filter、Listener

適用版本提示

  • CAS 3.x / 4.x:cas-server-webapp WAR Overlay
  • CAS 5.x+:官方推薦 cas-overlay-template(Gradle/Maven 雙模板),原理相同

採用 Overlay 模式,讓 CAS 客製化從「魔改源碼」進化為「標準化擴展」,是專業團隊的必選方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved