使用maven的overlay实现无侵入的改造CAS

【说明】 本文转载自:http://www.cnblogs.com/notDog/p/5276645.html

单点登录CAS使用记(八):使用maven的overlay实现无侵入的改造CAS

前期在学习CAS部署的过程中,都是网上各种教程,各种方案不停的尝试。

期间各种侵入改源码,时间久了,改了哪个文件,改了哪段配置,增加了哪段代码,都有可能混淆不清了。

而且最大的问题是,万一换个人来维护或者哪天需要升级CAS版本,从何下手?

 

还好,maven的overlay的功能,可以帮助我解决这个问题。

什么是maven的overlay?

 overlay可以把多个项目war合并成为一个项目,并且如果项目存在同名文件,那么主项目中的文件将覆盖掉其他项目的同名文件。

于是,我就可以完全不修改cas-server-webapp的原有代码实现CAS了。

 

步骤一:新建my-cas-server

默认的CAS是以cas-server-webapp为主项目,用户登录认证入口、用户登录页面、各种主配置文件都包含在此项目中。

现在,我把新建的my-cas-server作为我的主项目,而把cas-server-core项目作为从属项目导入主项目中。

my-cas-server的pom.xml

<dependency>

<groupId>org.jasig.cas</groupId>

<artifactId>cas-server-webapp</artifactId>

<version>3.4.11</version>

<type>war</type>

<scope>runtime</scope>

</dependency>

 

步骤二:设置overlays

配置overlay用于覆盖从属项目的同名文件,意思就是说,如果我主项目中存在与cas-server-webapp项目相同目录并且相同名称的文件,已主项目的为准,也就是覆盖从属项目的文件。

在my-cas-server的pom.xml中添加:

<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>

 

步骤三:拷贝同名文件

把之前修改过的cas-server-webapp的源码以及配置文件,全都列举出来,并且拷贝到my-cas-server的相同目录下。

例如:之前我改过了这么些代码(部分代码)

UsernamePasswordCredentials.java

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

同样的,我把这些文件全部复制到新项目中,目录与原项目保持一致。

 

步骤四:启动my-cas-server测试效果

启动后发现,与之前效果完全一致,可以正常访问,也可以正常的进行认证。

 

扩展:

采用overlay方式后,不仅可以不用修改源码进行CAS改造,而且你还会发现,编码的自由度大大增加了,不用再受限于原有项目的种种约束。

例如,我想要美化一下登录页面,原有的太过简单了。

我完全可以像平时开发一下,重新绘制一个登录页面,然后在配置文件中替换掉默认登录页面就可以了。

然后修改一下default_views.properties

### Login view (/login)

casLoginView.(class)=org.springframework.web.servlet.view.JstlView

casLoginView.url=/WEB-INF/view/jsp/default/ui/casLoginView.jsp

 

<span style="font-size: 14px; color: rgb(51, 51, 51); font-family: "PingFang SC", "Helvetica Neue", Helvetica, Arial, sans-serif; line-height: 1.8;"–<>

### Login view (/login)

casLoginView.(class)=org.springframework.web.servlet.view.JstlView

casLoginView.url=/WEB-INF/jsp/login.jsp

 

重新启动,运行。

 

单点登录CAS使用记系列:

 

此条目发表在未分类分类目录,贴了, 标签。将固定链接加入收藏夹。