zoukankan      html  css  js  c++  java
  • 单点登录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

    -->

    ### Login view (/login)
    casLoginView.(class)=org.springframework.web.servlet.view.JstlView
    casLoginView.url=/WEB-INF/jsp/login.jsp

    重新启动,运行。

     


    单点登录CAS使用记系列:

     

  • 相关阅读:
    Java--数组转成list,list转数组
    js禁用后退
    正则
    实用符号Alt+小键盘快输
    Minimum Depth of Binary Tree
    Balanced Binary Tree
    Valid Palindrome [leetcode]
    Sum Root to Leaf Numbers
    reorder List
    判断链表 有环
  • 原文地址:https://www.cnblogs.com/notDog/p/5276645.html
Copyright © 2011-2022 走看看